diff options
author | Nicolas Williams <nico@cryptonector.com> | 2013-12-04 18:14:10 -0600 |
---|---|---|
committer | Nicolas Williams <nico@cryptonector.com> | 2013-12-04 18:21:41 -0600 |
commit | 04bc2ef7cf0b02f434c99239d80f59bbf275a1d2 (patch) | |
tree | 01f8c431e9098753d6ff4c6079ae57c1bdc5d382 /jv.c | |
parent | 09104ce531f2ff2b941592b161bbb10f28b90c09 (diff) |
Add jv_string_vfmt()
Diffstat (limited to 'jv.c')
-rw-r--r-- | jv.c | 18 |
1 files changed, 13 insertions, 5 deletions
@@ -774,14 +774,14 @@ jv jv_string_append_str(jv a, const char* str) { return jv_string_append_buf(a, str, strlen(str)); } -jv jv_string_fmt(const char* fmt, ...) { +jv jv_string_vfmt(const char* fmt, va_list ap) { int size = 1024; while (1) { char* buf = jv_mem_alloc(size); - va_list args; - va_start(args, fmt); - int n = vsnprintf(buf, size, fmt, args); - va_end(args); + va_list ap2; + va_copy(ap2, ap); + int n = vsnprintf(buf, size, fmt, ap2); + va_end(ap2); if (n < size) { jv ret = jv_string_sized(buf, n); jv_mem_free(buf); @@ -793,6 +793,14 @@ jv jv_string_fmt(const char* fmt, ...) { } } +jv jv_string_fmt(const char* fmt, ...) { + va_list args; + va_start(args, fmt); + jv res = jv_string_vfmt(fmt, args); + va_end(args); + return res; +} + /* * Objects (internal helpers) */ |