aboutsummaryrefslogtreecommitdiff
path: root/lib/libarchive/archive_string_sprintf.c
diff options
context:
space:
mode:
authorTim Kientzle <kientzle@FreeBSD.org>2004-08-26 03:33:53 +0000
committerTim Kientzle <kientzle@FreeBSD.org>2004-08-26 03:33:53 +0000
commitc85db499ac3451cc7b8273cd87a2cd83f1b5c82e (patch)
tree9941579160bcac6186b65bad04cbaf7e688a37d1 /lib/libarchive/archive_string_sprintf.c
parent1db81dc0741f407421b24bd01768a519b2db7ffb (diff)
Notes
Diffstat (limited to 'lib/libarchive/archive_string_sprintf.c')
-rw-r--r--lib/libarchive/archive_string_sprintf.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/libarchive/archive_string_sprintf.c b/lib/libarchive/archive_string_sprintf.c
index 174d2f99eed8..b191b4b25355 100644
--- a/lib/libarchive/archive_string_sprintf.c
+++ b/lib/libarchive/archive_string_sprintf.c
@@ -47,19 +47,22 @@ __archive_string_vsprintf(struct archive_string *as, const char *fmt,
va_list ap)
{
size_t l;
+ va_list ap1;
if (fmt == NULL) {
as->s[0] = 0;
return;
}
+ va_copy(ap1, ap);
l = vsnprintf(as->s, as->buffer_length, fmt, ap);
/* If output is bigger than the buffer, resize and try again. */
if (l+1 >= as->buffer_length) {
__archive_string_ensure(as, l + 1);
- l = vsnprintf(as->s, as->buffer_length, fmt, ap);
+ l = vsnprintf(as->s, as->buffer_length, fmt, ap1);
}
as->length = l;
+ va_end(ap1);
}
/*