diff options
Diffstat (limited to 'libbb/bb_asprintf.c')
-rw-r--r-- | libbb/bb_asprintf.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/libbb/bb_asprintf.c b/libbb/bb_asprintf.c index 8658a54..191417a 100644 --- a/libbb/bb_asprintf.c +++ b/libbb/bb_asprintf.c @@ -13,9 +13,19 @@ char *bb_xasprintf(const char *format, ...) int r; char *string_ptr; +#ifdef HAVE_GNU_EXTENSIONS va_start(p, format); r = vasprintf(&string_ptr, format, p); va_end(p); +#else + 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); + va_end(p); +#endif if (r < 0) { bb_perror_msg_and_die("bb_xasprintf"); |