aboutsummaryrefslogtreecommitdiff
path: root/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'buffer.c')
-rw-r--r--buffer.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/buffer.c b/buffer.c
index abf3ab7..f483d53 100644
--- a/buffer.c
+++ b/buffer.c
@@ -118,8 +118,10 @@ bool buffer_vprintf(Buffer *buf, const char *fmt, va_list ap) {
va_list ap_save;
va_copy(ap_save, ap);
int len = vsnprintf(NULL, 0, fmt, ap);
- if (len == -1 || !buffer_grow(buf, len+1))
+ if (len == -1 || !buffer_grow(buf, len+1)) {
+ va_end(ap_save);
return false;
+ }
bool ret = vsnprintf(buf->data, len+1, fmt, ap_save) == len;
if (ret)
buf->len = len+1;