]> Savannah Git Hosting - gnulib.git/commitdiff
mbuiter: Optimize clearing an mbstate_t.
authorBruno Haible <bruno@clisp.org>
Sun, 16 Jul 2023 05:30:46 +0000 (07:30 +0200)
committerBruno Haible <bruno@clisp.org>
Sun, 16 Jul 2023 08:29:19 +0000 (10:29 +0200)
* lib/mbuiter.h: Include <wchar.h>.
(mbuiter_multi_next, mbuiter_multi_copy, mbui_init): Use mbszero.
* modules/mbuiter (Depends-on): Add mbszero.

ChangeLog
lib/mbuiter.h
modules/mbuiter

index c14b35b2d3ab69eaa181592ea34cda2b3366e20e..bdebe0b769c806fcc9c5bdd6347e22888e7d918b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2023-07-16  Bruno Haible  <bruno@clisp.org>
+
+       mbuiter: Optimize clearing an mbstate_t.
+       * lib/mbuiter.h: Include <wchar.h>.
+       (mbuiter_multi_next, mbuiter_multi_copy, mbui_init): Use mbszero.
+       * modules/mbuiter (Depends-on): Add mbszero.
+
 2023-07-16  Bruno Haible  <bruno@clisp.org>
 
        mbiter: Optimize clearing an mbstate_t.
index e78ffa46ae599ed42709805dc4f7455bc24c995e..6a060329411cefc966b7044f767271ddc224b2cc 100644 (file)
@@ -99,6 +99,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <uchar.h>
+#include <wchar.h>
 
 #include "mbchar.h"
 #include "strnlen1.h"
@@ -170,7 +171,7 @@ mbuiter_multi_next (struct mbuiter_multi *iter)
           #if !GNULIB_MBRTOC32_REGULAR
           iter->in_shift = false;
           #endif
-          memset (&iter->state, '\0', sizeof (mbstate_t));
+          mbszero (&iter->state);
         }
       else if (iter->cur.bytes == (size_t) -2)
         {
@@ -222,7 +223,7 @@ mbuiter_multi_copy (struct mbuiter_multi *new_iter, const struct mbuiter_multi *
     memcpy (&new_iter->state, &old_iter->state, sizeof (mbstate_t));
   else
   #endif
-    memset (&new_iter->state, 0, sizeof (mbstate_t));
+    mbszero (&new_iter->state);
   new_iter->next_done = old_iter->next_done;
   mb_copy (&new_iter->cur, &old_iter->cur);
 }
@@ -232,13 +233,13 @@ typedef struct mbuiter_multi mbui_iterator_t;
 #if !GNULIB_MBRTOC32_REGULAR
 #define mbui_init(iter, startptr) \
   ((iter).cur.ptr = (startptr), \
-   (iter).in_shift = false, memset (&(iter).state, '\0', sizeof (mbstate_t)), \
+   (iter).in_shift = false, mbszero (&(iter).state), \
    (iter).next_done = false)
 #else
 /* Optimized: no in_shift.  */
 #define mbui_init(iter, startptr) \
   ((iter).cur.ptr = (startptr), \
-   memset (&(iter).state, '\0', sizeof (mbstate_t)), \
+   mbszero (&(iter).state), \
    (iter).next_done = false)
 #endif
 #define mbui_avail(iter) \
index 23b1b20d04ff46f8992ac193550ff690057681e8..53a1d13dc817c071402d63e6912c0975565cb75e 100644 (file)
@@ -12,6 +12,7 @@ extern-inline
 mbchar
 mbrtoc32
 mbsinit
+mbszero
 uchar
 stdbool
 strnlen1