From 78d6be9341efcb1d0956e65a03a7f84a4c01b106 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Thu, 31 May 2018 21:01:42 -0500 Subject: [PATCH] Fix up ssprintf. --- sdk/Windows/Helpers.cpp | 25 +++++-------------------- 1 file changed, 5 insertions(+), 20 deletions(-) diff --git a/sdk/Windows/Helpers.cpp b/sdk/Windows/Helpers.cpp index 6141a24..a886e88 100644 --- a/sdk/Windows/Helpers.cpp +++ b/sdk/Windows/Helpers.cpp @@ -68,27 +68,12 @@ wstring SMX::GetErrorString(int err) string SMX::vssprintf(const char *szFormat, va_list argList) { - string sStr; - - char *pBuf = NULL; - int iChars = 128; - int iUsed = 0; - int iTry = 0; + int iChars = vsnprintf(NULL, 0, szFormat, argList); - do - { - // Grow more than linearly (e.g. 512, 1536, 3072, etc) - iChars += iTry * 1024; - delete[] pBuf; - pBuf = new char[iChars]; - iUsed = vsnprintf(pBuf, iChars-1, szFormat, argList); - ++iTry; - } while(iUsed < 0); - - // assign whatever we managed to format - sStr.assign(pBuf, iUsed); - - delete[] pBuf; + string sStr; + sStr.resize(iChars+1); + vsnprintf((char *) sStr.data(), iChars+1, szFormat, argList); + sStr.resize(iChars); return sStr; }