summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/libutil.cc
diff options
context:
space:
mode:
authorAdam Borowski <kilobyte@angband.pl>2010-01-01 01:26:19 +0100
committerAdam Borowski <kilobyte@angband.pl>2010-01-01 01:26:19 +0100
commit7cdbc2d289a11d18725d0dbaccea35bd1ea4dd25 (patch)
tree4b10e8a065dba10e916d5a151848ef0536225842 /crawl-ref/source/libutil.cc
parentef58eb82c69d3331aaf2568ebe64c0787120be58 (diff)
downloadcrawl-ref-7cdbc2d289a11d18725d0dbaccea35bd1ea4dd25.tar.gz
crawl-ref-7cdbc2d289a11d18725d0dbaccea35bd1ea4dd25.zip
Properly bracket va_copy() with va_end(). Don't leak saved args.
Diffstat (limited to 'crawl-ref/source/libutil.cc')
-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);