From d8821cebabdbf47e86d396439be57410c85b30c7 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 18 Sep 2006 23:13:36 +0000 Subject: [PATCH] strings passed to assign do not need to be null-terminated --- stepmania/src/RageUtil.cpp | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/stepmania/src/RageUtil.cpp b/stepmania/src/RageUtil.cpp index 0b91cb02f1..b873cd8ed5 100644 --- a/stepmania/src/RageUtil.cpp +++ b/stepmania/src/RageUtil.cpp @@ -263,21 +263,18 @@ RString vssprintf( const char *szFormat, va_list argList ) char *pBuf = NULL; int iChars = 1; int iUsed = 0; - size_t iActual = 0; int iTry = 0; do { // Grow more than linearly (e.g. 512, 1536, 3072, etc) - iChars += (iTry+1) * FMT_BLOCK_SIZE; + iChars += iTry * FMT_BLOCK_SIZE; pBuf = (char*) _alloca( sizeof(char)*iChars ); iUsed = vsnprintf( pBuf, iChars-1, szFormat, argList ); - - // Ensure proper NULL termination. - iActual = iUsed == -1 ? iChars-1 : min(iUsed, iChars-1); - pBuf[iActual+1]= '\0'; } while ( iUsed < 0 && iTry++ < MAX_FMT_TRIES ); + int iActual = min( iUsed, iChars-1 ); + // assign whatever we managed to format sStr.assign( pBuf, iActual ); #else