+2023-07-16 Bruno Haible <bruno@clisp.org>
+
+ dfa: Optimize clearing an mbstate_t.
+ * lib/dfa.c (mbszero) [GAWK]: Add fallback definition.
+ (mbs_to_wchar, lex, addtok_wc, dfaexec_main): Use mbszero.
+ * modules/dfa (Depends-on): Add mbszero.
+
2023-07-16 Bruno Haible <bruno@clisp.org>
uchar-c23: Optimize clearing an mbstate_t.
# define c32tob wctob
# define c32isprint iswprint
# define c32isspace iswspace
+# define mbszero(p) memset ((p), 0, sizeof (mbstate_t))
#else
/* Use ISO C 11 + gnulib API. */
# include <uchar.h>
'mbrtoc32-regular' module. */
return nbytes;
}
- memset (&d->mbs, 0, sizeof d->mbs);
+ mbszero (&d->mbs);
}
*pwc = wc;
else
{
char buf[MB_LEN_MAX + 1];
- mbstate_t s = { 0 };
+ mbstate_t s;
+ mbszero (&s);
size_t stored_bytes = c32rtomb (buf, dfa->lex.wctok, &s);
if (stored_bytes < (size_t) -1)
{
addtok_wc (struct dfa *dfa, wint_t wc)
{
unsigned char buf[MB_LEN_MAX];
- mbstate_t s = { 0 };
+ mbstate_t s;
+ mbszero (&s);
size_t stored_bytes = c32rtomb ((char *) buf, wc, &s);
int buflen;
if (multibyte)
{
- memset (&d->mbs, 0, sizeof d->mbs);
+ mbszero (&d->mbs);
if (d->mb_follows.alloc == 0)
alloc_position_set (&d->mb_follows, d->nleaves);
}