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

ChangeLog
lib/mbiter.h
modules/mbiter

index d89119176f44bbeeeca498cc62a97b2670d126f7..c14b35b2d3ab69eaa181592ea34cda2b3366e20e 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2023-07-16  Bruno Haible  <bruno@clisp.org>
+
+       mbiter: Optimize clearing an mbstate_t.
+       * lib/mbiter.h: Include <wchar.h>.
+       (mbiter_multi_next, mbiter_multi_copy, mbi_init): Use mbszero.
+       * modules/mbiter (Depends-on): Add mbszero.
+
 2023-07-16  Bruno Haible  <bruno@clisp.org>
 
        c32stombs: Optimize clearing an mbstate_t.
index e5d72410368b9d2141fffea4eb2cc088d9ed1a18..c9c18df05d89ab84583b187368d4b25966282d1f 100644 (file)
@@ -91,6 +91,7 @@
 #include <stddef.h>
 #include <string.h>
 #include <uchar.h>
+#include <wchar.h>
 
 #include "mbchar.h"
 
@@ -161,7 +162,7 @@ mbiter_multi_next (struct mbiter_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)
         {
@@ -219,7 +220,7 @@ mbiter_multi_copy (struct mbiter_multi *new_iter, const struct mbiter_multi *old
     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);
 }
@@ -229,13 +230,13 @@ typedef struct mbiter_multi mbi_iterator_t;
 #if !GNULIB_MBRTOC32_REGULAR
 #define mbi_init(iter, startptr, length) \
   ((iter).cur.ptr = (startptr), (iter).limit = (iter).cur.ptr + (length), \
-   (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 mbi_init(iter, startptr, length) \
   ((iter).cur.ptr = (startptr), (iter).limit = (iter).cur.ptr + (length), \
-   memset (&(iter).state, '\0', sizeof (mbstate_t)), \
+   mbszero (&(iter).state), \
    (iter).next_done = false)
 #endif
 #if !GNULIB_MBRTOC32_REGULAR
index 1d50d1148e07f15ba27b4566b2e3fd9899f6e32a..29d217f194ce3fcc2e0623a148e2bbb1f5dbcd4d 100644 (file)
@@ -12,6 +12,7 @@ extern-inline
 mbchar
 mbrtoc32
 mbsinit
+mbszero
 uchar
 stdbool