diff options
-rw-r--r-- | libbb/xfuncs_printf.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/libbb/xfuncs_printf.c b/libbb/xfuncs_printf.c index 7207ec58a..f8b1b81cd 100644 --- a/libbb/xfuncs_printf.c +++ b/libbb/xfuncs_printf.c | |||
@@ -287,8 +287,22 @@ char* FAST_FUNC xasprintf(const char *format, ...) | |||
287 | char *string_ptr; | 287 | char *string_ptr; |
288 | 288 | ||
289 | va_start(p, format); | 289 | va_start(p, format); |
290 | #if ENABLE_PLATFORM_MINGW32 | ||
291 | string_ptr = xmalloc(1024); | ||
292 | r = vsnprintf(string_ptr, 1024, format, p); | ||
293 | va_end(p); | ||
294 | if (r > 0) { | ||
295 | free(string_ptr); | ||
296 | r += 2; | ||
297 | string_ptr = xmalloc(r); | ||
298 | va_start(p, format); | ||
299 | r = vsnprintf(string_ptr, r, format, p); | ||
300 | va_end(p); | ||
301 | } | ||
302 | #else | ||
290 | r = vasprintf(&string_ptr, format, p); | 303 | r = vasprintf(&string_ptr, format, p); |
291 | va_end(p); | 304 | va_end(p); |
305 | #endif | ||
292 | 306 | ||
293 | if (r < 0) | 307 | if (r < 0) |
294 | bb_error_msg_and_die(bb_msg_memory_exhausted); | 308 | bb_error_msg_and_die(bb_msg_memory_exhausted); |