From 9cfa58a7d31c93196ce36f134224526666de77a7 Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Sun, 16 Jul 2023 07:30:46 +0200 Subject: [PATCH] mbuiter: Optimize clearing an mbstate_t. * lib/mbuiter.h: Include . (mbuiter_multi_next, mbuiter_multi_copy, mbui_init): Use mbszero. * modules/mbuiter (Depends-on): Add mbszero. --- ChangeLog | 7 +++++++ lib/mbuiter.h | 9 +++++---- modules/mbuiter | 1 + 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/ChangeLog b/ChangeLog index c14b35b2d3..bdebe0b769 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2023-07-16 Bruno Haible + + mbuiter: Optimize clearing an mbstate_t. + * lib/mbuiter.h: Include . + (mbuiter_multi_next, mbuiter_multi_copy, mbui_init): Use mbszero. + * modules/mbuiter (Depends-on): Add mbszero. + 2023-07-16 Bruno Haible mbiter: Optimize clearing an mbstate_t. diff --git a/lib/mbuiter.h b/lib/mbuiter.h index e78ffa46ae..6a06032941 100644 --- a/lib/mbuiter.h +++ b/lib/mbuiter.h @@ -99,6 +99,7 @@ #include #include #include +#include #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) \ diff --git a/modules/mbuiter b/modules/mbuiter index 23b1b20d04..53a1d13dc8 100644 --- a/modules/mbuiter +++ b/modules/mbuiter @@ -12,6 +12,7 @@ extern-inline mbchar mbrtoc32 mbsinit +mbszero uchar stdbool strnlen1 -- 2.39.5