diff options
author | Adam Borowski <kilobyte@angband.pl> | 2010-01-01 01:26:19 +0100 |
---|---|---|
committer | Adam Borowski <kilobyte@angband.pl> | 2010-01-01 01:26:19 +0100 |
commit | 7cdbc2d289a11d18725d0dbaccea35bd1ea4dd25 (patch) | |
tree | 4b10e8a065dba10e916d5a151848ef0536225842 /crawl-ref/source/libutil.cc | |
parent | ef58eb82c69d3331aaf2568ebe64c0787120be58 (diff) | |
download | crawl-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.cc | 4 |
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); |