diff options
-rw-r--r-- | libbb/platform.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/libbb/platform.c b/libbb/platform.c index 17ad3f75a..8642337d4 100644 --- a/libbb/platform.c +++ b/libbb/platform.c | |||
@@ -51,8 +51,21 @@ int fdprintf(int fd, const char *format, ...) | |||
51 | char *string_ptr; | 51 | char *string_ptr; |
52 | 52 | ||
53 | va_start(p, format); | 53 | va_start(p, format); |
54 | r = vasprintf(&string_ptr, format, p); | 54 | if (ENABLE_PLATFORM_MINGW32) { |
55 | string_ptr = xmalloc(1024); | ||
56 | r = vsnprintf(string_ptr, 1024, format, p); | ||
57 | } | ||
58 | else | ||
59 | r = vasprintf(&string_ptr, format, p); | ||
55 | va_end(p); | 60 | va_end(p); |
61 | if (ENABLE_PLATFORM_MINGW32 && r > 0) { | ||
62 | free(string_ptr); | ||
63 | r += 2; | ||
64 | string_ptr = xmalloc(r); | ||
65 | va_start(p, format); | ||
66 | r = vsnprintf(string_ptr, r, format, p); | ||
67 | va_end(p); | ||
68 | } | ||
56 | if (r >= 0) { | 69 | if (r >= 0) { |
57 | r = full_write(fd, string_ptr, r); | 70 | r = full_write(fd, string_ptr, r); |
58 | free(string_ptr); | 71 | free(string_ptr); |