From 1d5750b95c06913a1f18a995481276d698d20fae Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 22 Mar 2023 12:56:46 -0400 Subject: fix swprintf handling of nul character in output the buffer-flush function did not account for mbtowc returning 0 rather than 1 when converting the nul character. this prevented advancing past it, instead repeatedly converting it into the output wide character string until the max output length was exhausted. --- src/stdio/vswprintf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/stdio/vswprintf.c b/src/stdio/vswprintf.c index 7f98c5c9..fc223cf2 100644 --- a/src/stdio/vswprintf.c +++ b/src/stdio/vswprintf.c @@ -18,6 +18,7 @@ static size_t sw_write(FILE *f, const unsigned char *s, size_t l) if (s!=f->wbase && sw_write(f, f->wbase, f->wpos-f->wbase)==-1) return -1; while (c->l && l && (i=mbtowc(c->ws, (void *)s, l))>=0) { + if (!i) i=1; s+=i; l-=i; c->l--; -- cgit v1.2.1