Merge pull request #427 from lxin/va_end

Call va_end after va_copy in json_vsprintf
This commit is contained in:
Petri Lehtinen 2018-07-30 13:41:39 +03:00 committed by GitHub
commit 401ece058d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -781,26 +781,33 @@ static json_t *json_string_copy(const json_t *string)
}
json_t *json_vsprintf(const char *fmt, va_list ap) {
json_t *json = NULL;
int length;
char *buf;
va_list aq;
va_copy(aq, ap);
length = vsnprintf(NULL, 0, fmt, ap);
if (length == 0)
return json_string("");
if (length == 0) {
json = json_string("");
goto out;
}
buf = jsonp_malloc(length + 1);
if (!buf)
return NULL;
goto out;
vsnprintf(buf, length + 1, fmt, aq);
if (!utf8_check_string(buf, length)) {
jsonp_free(buf);
return NULL;
goto out;
}
return jsonp_stringn_nocheck_own(buf, length);
json = jsonp_stringn_nocheck_own(buf, length);
out:
va_end(aq);
return json;
}
json_t *json_sprintf(const char *fmt, ...) {