src/cmd/dist/windows.c | 13 ++++++++----- diff --git a/src/cmd/dist/windows.c b/src/cmd/dist/windows.c index 1655f7770495019ffb5b3209d84199757c325690..aa961eb6cf791118e8bc918f010c7568d509dba8 100644 --- a/src/cmd/dist/windows.c +++ b/src/cmd/dist/windows.c @@ -833,14 +833,17 @@ void xprintf(char *fmt, ...) { va_list arg; - static char buf[1024]; - DWORD n; + char *p; + DWORD n, w; va_start(arg, fmt); - vsnprintf(buf, sizeof buf, fmt, arg); + n = vsnprintf(NULL, 0, fmt, arg); + p = xmalloc(n+1); + vsnprintf(p, n+1, fmt, arg); va_end(arg); - n = 0; - WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), buf, strlen(buf), &n, 0); + w = 0; + WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), p, n, &w, 0); + xfree(p); } int