author | Rich Felker <dalias@aerifal.cx> | 2016年11月07日 20:39:59 -0500 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2016年11月07日 20:39:59 -0500 |
commit | 7442442ccc665641a8827177e8e7ed45bbbd6584 (patch) | |
tree | 1131612f9a89aeb7a15f809d1b358186bb02159d /src/stdio/vswprintf.c | |
parent | bc1e7731cee963e422575f81048792f4d5db9641 (diff) | |
download | musl-7442442ccc665641a8827177e8e7ed45bbbd6584.tar.gz |
-rw-r--r-- | src/stdio/vswprintf.c | 9 |
diff --git a/src/stdio/vswprintf.c b/src/stdio/vswprintf.c index 7d237bae..6eb2f6ac 100644 --- a/src/stdio/vswprintf.c +++ b/src/stdio/vswprintf.c @@ -24,7 +24,14 @@ static size_t sw_write(FILE *f, const unsigned char *s, size_t l) c->ws++; } *c->ws = 0; - return i<0 ? i : l0; + if (i < 0) { + f->wpos = f->wbase = f->wend = 0; + f->flags |= F_ERR; + return i; + } + f->wend = f->buf + f->buf_size; + f->wpos = f->wbase = f->buf; + return l0; } int vswprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, va_list ap) |