From a7d4d42b855f2f5fa36c00acdc3049c4b79d7cd2 Mon Sep 17 00:00:00 2001 From: Michael Hansen Date: Tue, 1 Jan 2013 14:46:57 -0800 Subject: [PATCH] Remove an unnecessary extra heap allocation in plString::Format --- Sources/Plasma/CoreLib/plString.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/Sources/Plasma/CoreLib/plString.cpp b/Sources/Plasma/CoreLib/plString.cpp index 606eb2bc..16d35306 100644 --- a/Sources/Plasma/CoreLib/plString.cpp +++ b/Sources/Plasma/CoreLib/plString.cpp @@ -512,18 +512,20 @@ plString plString::IFormat(const char *fmt, va_list vptr) int size = 4096; for ( ;; ) { va_copy(vptr, vptr_save); - std::auto_ptr bigbuffer(new char[size]); - chars = vsnprintf(bigbuffer.get(), size, fmt, vptr); + plStringBuffer bigbuffer; + char *data = bigbuffer.CreateWritableBuffer(size); + chars = vsnprintf(data, size, fmt, vptr); if (chars >= 0) - return plString::FromUtf8(bigbuffer.get(), chars); + return bigbuffer; size *= 2; } } else if (chars >= 256) { va_copy(vptr, vptr_save); - std::unique_ptr bigbuffer(new char[chars+1]); - vsnprintf(bigbuffer.get(), chars+1, fmt, vptr); - return plString::FromUtf8(bigbuffer.get(), chars); + plStringBuffer bigbuffer; + char *data = bigbuffer.CreateWritableBuffer(chars+1); + vsnprintf(data, chars+1, fmt, vptr); + return bigbuffer; } return plString::FromUtf8(buffer, chars);