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);