From 2baf39da15b7b9d0fcfaf4a7813cdf7111d41725 Mon Sep 17 00:00:00 2001 From: Ben Kibbey Date: Wed, 8 Apr 2009 19:51:22 -0400 Subject: [PATCH] Another stdarg bugfix. This time in pwmd_strdup_printf(). --- src/libpwmd.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/libpwmd.c b/src/libpwmd.c index 687a230b..c4eef98f 100644 --- a/src/libpwmd.c +++ b/src/libpwmd.c @@ -2664,7 +2664,7 @@ char *pwmd_strdup(const char *str) char *pwmd_strdup_printf(const char *fmt, ...) { - va_list ap; + va_list ap, ap2; int len; char *buf; @@ -2672,15 +2672,14 @@ char *pwmd_strdup_printf(const char *fmt, ...) return NULL; va_start(ap, fmt); + va_copy(ap2, ap); len = vsnprintf(NULL, 0, fmt, ap); + va_end(ap); buf = pwmd_malloc(++len); - if (!buf) { - va_end(ap); - return NULL; - } + if (buf) + vsnprintf(buf, len, fmt, ap2); - vsnprintf(buf, len, fmt, ap); - va_end(ap); + va_end(ap2); return buf; } -- 2.11.4.GIT