summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--crawl-ref/source/libutil.cc4
1 files changed, 3 insertions, 1 deletions
diff --git a/crawl-ref/source/libutil.cc b/crawl-ref/source/libutil.cc
index bd3440d0fb..b2a0fdfe1e 100644
--- a/crawl-ref/source/libutil.cc
+++ b/crawl-ref/source/libutil.cc
@@ -145,11 +145,13 @@ std::string vmake_stringf(const char* s, va_list args)
char buf1[400];
va_list orig_args;
va_copy(orig_args, args);
- size_t len = vsnprintf(buf1, sizeof buf1, s, args);
+ size_t len = vsnprintf(buf1, sizeof buf1, s, orig_args);
+ va_end(orig_args);
if (len < sizeof buf1)
return (buf1);
char *buf2 = (char*)malloc(len + 1);
+ va_copy(orig_args, args);
vsnprintf(buf2, len + 1, s, orig_args);
va_end(orig_args);
std::string ret(buf2);