From c50b5d38c1fc5491e8c99c8a86b043d39e074acc Mon Sep 17 00:00:00 2001 From: fcolin Date: Thu, 31 Jan 2008 16:04:29 +0000 Subject: correction bug avec Gcc 4 sur amfou va_list est copiƩ --- src/ivybuffer.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'src/ivybuffer.c') diff --git a/src/ivybuffer.c b/src/ivybuffer.c index 7e65078..a47eef5 100644 --- a/src/ivybuffer.c +++ b/src/ivybuffer.c @@ -32,6 +32,7 @@ int make_message(IvyBuffer* buffer, const char *fmt, va_list ap) { /* Guess we need no more than BUFFER_INIT_SIZE bytes. */ int n; + va_list ap_copy; if ( buffer->size == 0 || buffer->data == NULL ) { buffer->size = BUFFER_SIZE; @@ -45,11 +46,13 @@ int make_message(IvyBuffer* buffer, const char *fmt, va_list ap) } while (1) { /* Try to print in the allocated space. */ + va_copy( ap_copy, ap ); #ifdef WIN32 - n = _vsnprintf (buffer->data + buffer->offset, buffer->size - buffer->offset, fmt, ap); + n = _vsnprintf (buffer->data + buffer->offset, buffer->size - buffer->offset, fmt, ap_copy); #else - n = vsnprintf (buffer->data + buffer->offset, buffer->size - buffer->offset, fmt, ap); + n = vsnprintf (buffer->data + buffer->offset, buffer->size - buffer->offset, fmt, ap_copy); #endif + va_end(ap_copy); /* If that worked, return the string size. */ if (n > -1 && n < (buffer->size - buffer->offset)) { -- cgit v1.1