From 7cdbc2d289a11d18725d0dbaccea35bd1ea4dd25 Mon Sep 17 00:00:00 2001 From: Adam Borowski Date: Fri, 1 Jan 2010 01:26:19 +0100 Subject: Properly bracket va_copy() with va_end(). Don't leak saved args. --- crawl-ref/source/libutil.cc | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'crawl-ref/source/libutil.cc') 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); -- cgit v1.2.3-54-g00ecf