diff options
author | fcolin | 2008-01-31 16:04:29 +0000 |
---|---|---|
committer | fcolin | 2008-01-31 16:04:29 +0000 |
commit | c50b5d38c1fc5491e8c99c8a86b043d39e074acc (patch) | |
tree | 3f268f441fd64fb8a12350a4897767b0071384c0 /src/ivybuffer.c | |
parent | 6fbcc6d3c3665d979bf12a549d96b1bbd925c80a (diff) | |
download | ivy-c-c50b5d38c1fc5491e8c99c8a86b043d39e074acc.zip ivy-c-c50b5d38c1fc5491e8c99c8a86b043d39e074acc.tar.gz ivy-c-c50b5d38c1fc5491e8c99c8a86b043d39e074acc.tar.bz2 ivy-c-c50b5d38c1fc5491e8c99c8a86b043d39e074acc.tar.xz |
correction bug avec Gcc 4 sur amfou va_list est copiƩ
Diffstat (limited to 'src/ivybuffer.c')
-rw-r--r-- | src/ivybuffer.c | 7 |
1 files changed, 5 insertions, 2 deletions
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)) { |