Module: wine Branch: master Commit: 4db6d184b3c7b0980af8f7d7be194f69f9f51b87 URL: http://source.winehq.org/git/wine.git/?a=commit;h=4db6d184b3c7b0980af8f7d7be...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Thu Feb 16 03:28:29 2012 +0300
menubuilder: Use va_start/va_end around vsnprintf() on every call.
---
programs/winemenubuilder/winemenubuilder.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-)
diff --git a/programs/winemenubuilder/winemenubuilder.c b/programs/winemenubuilder/winemenubuilder.c index c07507d..dc5fd29 100644 --- a/programs/winemenubuilder/winemenubuilder.c +++ b/programs/winemenubuilder/winemenubuilder.c @@ -236,13 +236,14 @@ static char* heap_printf(const char *format, ...) char *buffer, *ret; int n;
- va_start(args, format); while (1) { buffer = HeapAlloc(GetProcessHeap(), 0, size); if (buffer == NULL) break; + va_start(args, format); n = vsnprintf(buffer, size, format, args); + va_end(args); if (n == -1) size *= 2; else if (n >= size) @@ -251,7 +252,7 @@ static char* heap_printf(const char *format, ...) break; HeapFree(GetProcessHeap(), 0, buffer); } - va_end(args); + if (!buffer) return NULL; ret = HeapReAlloc(GetProcessHeap(), 0, buffer, strlen(buffer) + 1 ); if (!ret) ret = buffer;