diff options
Diffstat (limited to 'libbb/platform.c')
-rw-r--r-- | libbb/platform.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libbb/platform.c b/libbb/platform.c index 2bf34f5bc..d241d25a7 100644 --- a/libbb/platform.c +++ b/libbb/platform.c | |||
@@ -28,14 +28,16 @@ int FAST_FUNC vasprintf(char **string_ptr, const char *format, va_list p) | |||
28 | r = vsnprintf(buf, 128, format, p); | 28 | r = vsnprintf(buf, 128, format, p); |
29 | va_end(p); | 29 | va_end(p); |
30 | 30 | ||
31 | /* Note: can't use xstrdup/xmalloc, they call vasprintf (us) on failure! */ | ||
32 | |||
31 | if (r < 128) { | 33 | if (r < 128) { |
32 | va_end(p2); | 34 | va_end(p2); |
33 | *string_ptr = xstrdup(buf); | 35 | *string_ptr = strdup(buf); |
34 | return r; | 36 | return r; |
35 | } | 37 | } |
36 | 38 | ||
37 | *string_ptr = xmalloc(r+1); | 39 | *string_ptr = malloc(r+1); |
38 | r = vsnprintf(*string_ptr, r+1, format, p2); | 40 | r = (*string_ptr ? vsnprintf(*string_ptr, r+1, format, p2) : -1); |
39 | va_end(p2); | 41 | va_end(p2); |
40 | 42 | ||
41 | return r; | 43 | return r; |