Daniel Veillard wrote: >> Subject: [PATCH] virBufferVSprintf: do not skip va_end >> >> * src/util/buf.c (virBufferVSprintf): Do not omit or skip va_end calls. ... > Hum, that one I'm not sure. In the case of virBufferGrow failure, > we just did va_end(locarg); in the loop before, so going to cleanup > there does it twice, and I'm not sure it's legal. Probably simpler to > add just va_end(argptr); before return in that case and drop the > cleanup: target. Good catch. Corrected, as you suggest: >From 313af81e8ff93ceb06b6086ea917db6a7eb160cc Mon Sep 17 00:00:00 2001 From: Jim Meyering <meyering@xxxxxxxxxx> Date: Thu, 18 Feb 2010 21:25:01 +0100 Subject: [PATCH] virBufferVSprintf: do not omit va_end call * src/util/buf.c (virBufferVSprintf): Do not omit va_end call. Improved-by: Daniel Veillard. --- .gnulib | 2 +- src/util/buf.c | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gnulib b/.gnulib index 11fbc57..a1d565a 160000 --- a/.gnulib +++ b/.gnulib @@ -1 +1 @@ -Subproject commit 11fbc57405a118e6ec9a3ebc19bbf5ececdae4d6 +Subproject commit a1d565aa5b47ec56243e74d4ac8b4988a751fef2 diff --git a/src/util/buf.c b/src/util/buf.c index cc0a087..ef72294 100644 --- a/src/util/buf.c +++ b/src/util/buf.c @@ -245,8 +245,10 @@ virBufferVSprintf(const virBufferPtr buf, const char *format, ...) va_end(locarg); grow_size = (count > 1000) ? count : 1000; - if (virBufferGrow(buf, grow_size) < 0) + if (virBufferGrow(buf, grow_size) < 0) { + va_end(argptr); return; + } size = buf->size - buf->use - 1; va_copy(locarg, argptr); -- 1.7.0.233.g05e1a -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list