From 3ee1cc4e3986b74a7126871ad2a677b9e3ac3662 Mon Sep 17 00:00:00 2001 From: Ron Yorston Date: Fri, 8 Jul 2016 08:50:16 +0100 Subject: win32: allow for vsnprintf returning -1 vsnprintf can return -1. I've seen it do this when writing to a small buffer while vsnprintf(NULL, 0, ...) returns a valid length. I'd prefer not to rely on the latter working with arbitrary old Windows runtimes so just skip ANSI emulation if -1 is returned. --- win32/winansi.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/win32/winansi.c b/win32/winansi.c index d61e8a2cf..c0493c77e 100644 --- a/win32/winansi.c +++ b/win32/winansi.c @@ -536,9 +536,14 @@ int winansi_vfprintf(FILE *stream, const char *format, va_list list) if (!buf) goto abort; - len = vsnprintf(buf, len + 1, format, list); + va_copy(cp, list); + len = vsnprintf(buf, len + 1, format, cp); + va_end(cp); } + if (len == -1) + goto abort; + rv = ansi_emulate(buf, stream); if (buf != small_buf) -- cgit v1.2.3-55-g6feb