diff options
Diffstat (limited to 'lib/printf/glue.c')
| -rw-r--r-- | lib/printf/glue.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/printf/glue.c b/lib/printf/glue.c index 1b760dc2d3..29ca26ad5d 100644 --- a/lib/printf/glue.c +++ b/lib/printf/glue.c @@ -101,9 +101,11 @@ char *vasnprintfrr(struct memtype *mt, char *out, size_t outsz, const char *fmt, va_copy(ap2, ap); len = vbprintfrr(&fb, fmt, ap); - if (len < 0) + if (len < 0) { + va_end(ap2); /* error = malformed format string => try something useful */ return qstrdup(mt, fmt); + } if ((size_t)len >= outsz - 1) { ret = qmalloc(mt, len + 1); @@ -112,6 +114,8 @@ char *vasnprintfrr(struct memtype *mt, char *out, size_t outsz, const char *fmt, vbprintfrr(&fb, fmt, ap2); } + + va_end(ap2); ret[len] = '\0'; return ret; } |
