diff --git a/src/switch_apr.c b/src/switch_apr.c index 2844cb31c3..2f2c650ff8 100644 --- a/src/switch_apr.c +++ b/src/switch_apr.c @@ -618,17 +618,15 @@ SWITCH_DECLARE(int) switch_vasprintf(char **ret, const char *fmt, va_list ap) size_t buflen; len = vsnprintf(NULL, 0, fmt, ap); - if (len > 0) { - buflen = (size_t)(len + 1); - if ((buf = malloc(buflen)) == NULL) { - *ret = NULL; - return -1; - } + + if (len > 0 && (buf = malloc((buflen = (size_t)(len + 1)))) != NULL) { len = vsnprintf(buf, buflen, fmt, ap); *ret = buf; } else { *ret = NULL; + len = -1; } + return len; #endif