1.1 --- a/ucx/utils.c Wed Aug 14 15:24:14 2013 +0200 1.2 +++ b/ucx/utils.c Wed Aug 14 15:54:22 2013 +0200 1.3 @@ -147,6 +147,8 @@ 1.4 1.5 int ucx_vfprintf(void *stream, write_func wfc, const char *fmt, va_list ap) { 1.6 char buf[UCX_PRINTF_BUFSIZE]; 1.7 + va_list ap2; 1.8 + va_copy(ap2, ap); 1.9 int ret = vsnprintf(buf, UCX_PRINTF_BUFSIZE, fmt, ap); 1.10 if (ret < 0) { 1.11 return ret; 1.12 @@ -164,7 +166,8 @@ 1.13 return -1; 1.14 } 1.15 1.16 - ret = vsnprintf(newbuf, len, fmt, ap); 1.17 + ret = vsnprintf(newbuf, len, fmt, ap2); 1.18 + va_end(ap2); 1.19 if (ret > 0) { 1.20 ret = (int)wfc(newbuf, 1, ret, stream); 1.21 } 1.22 @@ -186,6 +189,8 @@ 1.23 sstr_t s; 1.24 s.ptr = NULL; 1.25 s.length = 0; 1.26 + va_list ap2; 1.27 + va_copy(ap2, ap); 1.28 char buf[UCX_PRINTF_BUFSIZE]; 1.29 int ret = vsnprintf(buf, UCX_PRINTF_BUFSIZE, fmt, ap); 1.30 if (ret > 0 && ret < UCX_PRINTF_BUFSIZE) { 1.31 @@ -198,7 +203,8 @@ 1.32 } else { 1.33 int len = ret + 1; 1.34 s.ptr = (char*)a->malloc(a->pool, len); 1.35 - ret = vsnprintf(s.ptr, len, fmt, ap); 1.36 + ret = vsnprintf(s.ptr, len, fmt, ap2); 1.37 + va_end(ap2); 1.38 if (ret < 0) { 1.39 free(s.ptr); 1.40 s.ptr = NULL;