diff options
Diffstat (limited to 'libbb')
-rw-r--r-- | libbb/xfuncs.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/libbb/xfuncs.c b/libbb/xfuncs.c index 67c9866..4e17c28 100644 --- a/libbb/xfuncs.c +++ b/libbb/xfuncs.c @@ -484,12 +484,14 @@ int fdprintf(int fd, const char *format, ...) #else // Bloat for systems that haven't got the GNU extension. va_start(p, format); - r = vsnprintf(NULL, 0, format, p); - va_end(p); - string_ptr = xmalloc(r+1); - va_start(p, format); - r = vsnprintf(string_ptr, r+1, format, p); + r = vsnprintf(NULL, 0, format, p) + 1; va_end(p); + string_ptr = malloc(r); + if (string_ptr) { + va_start(p, format); + r = vsnprintf(string_ptr, r, format, p); + va_end(p); + } #endif if (r >= 0) { |