>From 0c3084c97be5bba6456bc8f07c6d4cbb0451c4cd Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 16 Jul 2023 07:30:43 +0200 Subject: [PATCH 11/19] mbiter: Optimize clearing an mbstate_t. * lib/mbiter.h: Include . (mbiter_multi_next, mbiter_multi_copy, mbi_init): Use mbszero. * modules/mbiter (Depends-on): Add mbszero. --- ChangeLog | 7 +++++++ lib/mbiter.h | 9 +++++---- modules/mbiter | 1 + 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index d89119176f..c14b35b2d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2023-07-16 Bruno Haible + + mbiter: Optimize clearing an mbstate_t. + * lib/mbiter.h: Include . + (mbiter_multi_next, mbiter_multi_copy, mbi_init): Use mbszero. + * modules/mbiter (Depends-on): Add mbszero. + 2023-07-16 Bruno Haible c32stombs: Optimize clearing an mbstate_t. diff --git a/lib/mbiter.h b/lib/mbiter.h index e5d7241036..c9c18df05d 100644 --- a/lib/mbiter.h +++ b/lib/mbiter.h @@ -91,6 +91,7 @@ #include #include #include +#include #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 diff --git a/modules/mbiter b/modules/mbiter index 1d50d1148e..29d217f194 100644 --- a/modules/mbiter +++ b/modules/mbiter @@ -12,6 +12,7 @@ extern-inline mbchar mbrtoc32 mbsinit +mbszero uchar stdbool -- 2.34.1