summaryrefslogtreecommitdiff
path: root/src/ivybuffer.c
diff options
context:
space:
mode:
authorfcolin2008-01-31 16:04:29 +0000
committerfcolin2008-01-31 16:04:29 +0000
commitc50b5d38c1fc5491e8c99c8a86b043d39e074acc (patch)
tree3f268f441fd64fb8a12350a4897767b0071384c0 /src/ivybuffer.c
parent6fbcc6d3c3665d979bf12a549d96b1bbd925c80a (diff)
downloadivy-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.c7
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))
{