size_t space;
size_t oldoff = buf->off;
int sz;
+ va_list aq;
for (;;) {
- buffer = buf->buffer + buf->off;
+ buffer = (char *)buf->buffer + buf->off;
space = buf->totallen - buf->misalign - buf->off;
+ va_copy(aq, ap);
+
#ifdef WIN32
- sz = vsnprintf(buffer, space - 1, fmt, ap);
+ sz = vsnprintf(buffer, space - 1, fmt, aq);
buffer[space - 1] = '\0';
#else
- sz = vsnprintf(buffer, space, fmt, ap);
+ sz = vsnprintf(buffer, space, fmt, aq);
#endif
+
+ va_end(aq);
+
if (sz == -1)
return (-1);
if (sz < space) {