diff options
| author | Tim Kientzle <kientzle@FreeBSD.org> | 2004-08-26 03:33:53 +0000 |
|---|---|---|
| committer | Tim Kientzle <kientzle@FreeBSD.org> | 2004-08-26 03:33:53 +0000 |
| commit | c85db499ac3451cc7b8273cd87a2cd83f1b5c82e (patch) | |
| tree | 9941579160bcac6186b65bad04cbaf7e688a37d1 /lib/libarchive | |
| parent | 1db81dc0741f407421b24bd01768a519b2db7ffb (diff) | |
Notes
Diffstat (limited to 'lib/libarchive')
| -rw-r--r-- | lib/libarchive/archive_string_sprintf.c | 5 |
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); } /* |
