From f5e62f28bc7be454a173d3aedca136c7d514643a Mon Sep 17 00:00:00 2001 From: ridiculousfish Date: Wed, 30 Apr 2014 16:29:52 -0700 Subject: [PATCH] Save a memory allocation in append_formatv --- common.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/common.cpp b/common.cpp index 4bb151042..ac0181d36 100644 --- a/common.cpp +++ b/common.cpp @@ -410,7 +410,7 @@ wcstring format_string(const wchar_t *format, ...) return result; } -wcstring vformat_string(const wchar_t *format, va_list va_orig) +void append_formatv(wcstring &target, const wchar_t *format, va_list va_orig) { const int saved_err = errno; /* @@ -461,22 +461,21 @@ wcstring vformat_string(const wchar_t *format, va_list va_orig) va_end(va); } - wcstring result = wcstring(buff); + target.append(buff); if (buff != static_buff) + { free(buff); + } errno = saved_err; - return result; } -void append_formatv(wcstring &str, const wchar_t *format, va_list ap) +wcstring vformat_string(const wchar_t *format, va_list va_orig) { - /* Preserve errno across this call since it likes to stomp on it */ - int err = errno; - str.append(vformat_string(format, ap)); - errno = err; - + wcstring result; + append_formatv(result, format, va_orig); + return result; } void append_format(wcstring &str, const wchar_t *format, ...)