summary refs log tree commit diff
diff options
context:
space:
mode:
authorRichard Nyberg <rnyberg@murmeldjur.se>2006-11-08 14:29:10 +0000
committerRichard Nyberg <rnyberg@murmeldjur.se>2006-11-08 14:29:10 +0000
commit68c4f99b29a758d29ec301e2de8236a88a55c6df (patch)
tree69983511e1aaefc5363140976483cb10bd75f960
parent6fbf0b520fac492f9fd951100ace5664c5f1de94 (diff)
downloadbtpd-68c4f99b29a758d29ec301e2de8236a88a55c6df.tar.gz
btpd-68c4f99b29a758d29ec301e2de8236a88a55c6df.zip
Fix evbuffer_add_vprintf. Patch taken from <http://monkeymail.org/archives/libevent-users/2006-October/000299.html>.
-rw-r--r--libevent/buffer.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/libevent/buffer.c b/libevent/buffer.c
index e09cc3d..1585389 100644
--- a/libevent/buffer.c
+++ b/libevent/buffer.c
@@ -132,17 +132,20 @@ evbuffer_add_vprintf(struct evbuffer *buf, const char *fmt, va_list ap)
 	size_t space;
 	size_t oldoff = buf->off;
 	int sz;
+	va_list aq;
 
 	for (;;) {
 		buffer = 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) {