+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.
#include <stdlib.h>
#include <string.h>
#include <uchar.h>
+#include <wchar.h>
#include "mbchar.h"
#include "strnlen1.h"
#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)
{
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);
}
#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) \