Save a memory allocation in append_formatv

This commit is contained in:
ridiculousfish 2014-04-30 16:29:52 -07:00
parent ed37427f9e
commit f5e62f28bc

View file

@ -410,7 +410,7 @@ wcstring format_string(const wchar_t *format, ...)
return result; 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; const int saved_err = errno;
/* /*
@ -461,22 +461,21 @@ wcstring vformat_string(const wchar_t *format, va_list va_orig)
va_end(va); va_end(va);
} }
wcstring result = wcstring(buff); target.append(buff);
if (buff != static_buff) if (buff != static_buff)
{
free(buff); free(buff);
}
errno = saved_err; 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 */ wcstring result;
int err = errno; append_formatv(result, format, va_orig);
str.append(vformat_string(format, ap)); return result;
errno = err;
} }
void append_format(wcstring &str, const wchar_t *format, ...) void append_format(wcstring &str, const wchar_t *format, ...)