From: Rich Felker Date: Wed, 22 Mar 2023 16:56:46 +0000 (-0400) Subject: fix swprintf handling of nul character in output X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=1d5750b95c06913a1f18a995481276d698d20fae;p=musl 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. --- 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--;