summaryrefslogtreecommitdiff
path: root/libbb/xfuncs_printf.c
diff options
context:
space:
mode:
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-04-05 22:25:29 +0200
committerNguyễn Thái Ngọc Duy <pclouds@gmail.com>2010-09-10 19:28:29 +1000
commit6c50650c22348f43e089aae01108576022be9163 (patch)
tree6e0296bb3ccb556d80f2ca325164307f63604981 /libbb/xfuncs_printf.c
parent9b680f4959a4a54fc2702663922f201b145acdd1 (diff)
downloadbusybox-w32-6c50650c22348f43e089aae01108576022be9163.tar.gz
busybox-w32-6c50650c22348f43e089aae01108576022be9163.tar.bz2
busybox-w32-6c50650c22348f43e089aae01108576022be9163.zip
win32: workaround msvcrt *printf defects
Diffstat (limited to 'libbb/xfuncs_printf.c')
-rw-r--r--libbb/xfuncs_printf.c14
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);