As suggested, extract strlen calls from sizes into variables so it isn't called twice

This commit is contained in:
Glenn Smith 2018-03-08 20:59:40 -05:00
parent ed10ce2511
commit 6b024b21bf
33 changed files with 171 additions and 114 deletions

View file

@ -2340,8 +2340,9 @@ static int Sc_ScanString(int ret)
if (!collapseEscape(CMDtext + 1))
return -1;
char* buffer = (char*)consoleAlloc(dStrlen(CMDtext));
dStrcpy(buffer, CMDtext + 1, dStrlen(CMDtext));
dsize_t bufferLen = dStrlen(CMDtext);
char* buffer = (char*)consoleAlloc(bufferLen);
dStrcpy(buffer, CMDtext + 1, bufferLen);
CMDlval.str = MakeToken< char* >(buffer, lineIndex);
return ret;

View file

@ -412,8 +412,9 @@ static int Sc_ScanString(int ret)
if(!collapseEscape(CMDtext+1))
return -1;
char* buffer = ( char* ) consoleAlloc( dStrlen( CMDtext ) );
dStrcpy( buffer, CMDtext + 1, dStrlen( CMDtext ) );
dsize_t bufferLen = dStrlen( CMDtext );
char* buffer = ( char* ) consoleAlloc( bufferLen );
dStrcpy( buffer, CMDtext + 1, bufferLen );
CMDlval.str = MakeToken< char* >( buffer, lineIndex );
return ret;

View file

@ -238,10 +238,11 @@ StrConstNode *StrConstNode::alloc(S32 lineNumber, char *str, bool tag, bool doc)
StrConstNode *ret = (StrConstNode *)consoleAlloc(sizeof(StrConstNode));
constructInPlace(ret);
ret->dbgLineNumber = lineNumber;
ret->str = (char *)consoleAlloc(dStrlen(str) + 1);
dsize_t retStrLen = dStrlen(str) + 1;
ret->str = (char *)consoleAlloc(retStrLen);
ret->tag = tag;
ret->doc = doc;
dStrcpy(ret->str, str, dStrlen(str) + 1);
dStrcpy(ret->str, str, retStrLen);
return ret;
}

View file

@ -646,8 +646,9 @@ static void _printf(ConsoleLogEntry::Level level, ConsoleLogEntry::Type type, co
entry.mLevel = level;
entry.mType = type;
#ifndef TORQUE_SHIPPING // this is equivalent to a memory leak, turn it off in ship build
entry.mString = (const char *)consoleLogChunker.alloc(dStrlen(pos) + 1);
dStrcpy(const_cast<char*>(entry.mString), pos, dStrlen(pos) + 1);
dsize_t logStringLen = dStrlen(pos) + 1;
entry.mString = (const char *)consoleLogChunker.alloc(logStringLen);
dStrcpy(const_cast<char*>(entry.mString), pos, logStringLen);
// This prevents infinite recursion if the console itself needs to
// re-allocate memory to accommodate the new console log entry, and

View file

@ -585,8 +585,9 @@ DefineConsoleFunction( strlwr, const char*, ( const char* str ),,
"@see strupr\n"
"@ingroup Strings" )
{
char *ret = Con::getReturnBuffer(dStrlen(str) + 1);
dStrcpy(ret, str, dStrlen(str) + 1);
dsize_t retLen = dStrlen(str) + 1;
char *ret = Con::getReturnBuffer(retLen);
dStrcpy(ret, str, retLen);
return dStrlwr(ret);
}
@ -602,8 +603,9 @@ DefineConsoleFunction( strupr, const char*, ( const char* str ),,
"@see strlwr\n"
"@ingroup Strings" )
{
char *ret = Con::getReturnBuffer(dStrlen(str) + 1);
dStrcpy(ret, str, dStrlen(str) + 1);
dsize_t retLen = dStrlen(str) + 1;
char *ret = Con::getReturnBuffer(retLen);
dStrcpy(ret, str, retLen);
return dStrupr(ret);
}
@ -1826,8 +1828,9 @@ DefineEngineFunction( detag, const char*, ( const char* str ),,
if( word == NULL )
return "";
char* ret = Con::getReturnBuffer( dStrlen( word + 1 ) + 1 );
dStrcpy( ret, word + 1, dStrlen(word + 1) + 1 );
dsize_t retLen = dStrlen(word + 1) + 1;
char* ret = Con::getReturnBuffer(retLen);
dStrcpy( ret, word + 1, retLen );
return ret;
}
else

View file

@ -617,8 +617,9 @@ DefineEngineFunction(fileBase, String, ( const char* fileName ),,
path = szPathCopy;
else
path++;
char *ret = Con::getReturnBuffer(dStrlen(path) + 1);
dStrcpy(ret, path, dStrlen(path) + 1);
dsize_t retLen = dStrlen(path) + 1;
char *ret = Con::getReturnBuffer(retLen);
dStrcpy(ret, path, retLen);
char *ext = dStrrchr(ret, '.');
if(ext)
*ext = 0;
@ -643,8 +644,9 @@ DefineEngineFunction(fileName, String, ( const char* fileName ),,
name = szPathCopy;
else
name++;
char *ret = Con::getReturnBuffer(dStrlen(name) + 1);
dStrcpy(ret, name, dStrlen(name) + 1);
dsize_t retLen = dStrlen(name) + 1;
char *ret = Con::getReturnBuffer(retLen);
dStrcpy(ret, name, retLen);
return ret;
}

View file

@ -134,10 +134,11 @@ SimObject *SimObjectMemento::restore() const
return NULL;
U32 numCharsToLeftParen = pLeftParen - mState;
tempBuffer = ( char* ) dMalloc( dStrlen( mState ) + uniqueNameLen + 1 );
dsize_t tempBufferLen = dStrlen(mState) + uniqueNameLen + 1;
tempBuffer = ( char* ) dMalloc( tempBufferLen );
dMemcpy( tempBuffer, mState, numCharsToLeftParen );
dMemcpy( &tempBuffer[ numCharsToLeftParen ], uniqueName, uniqueNameLen );
dStrcpy( &tempBuffer[ numCharsToLeftParen + uniqueNameLen ], &mState[ numCharsToLeftParen ], dStrlen(mState) - numCharsToLeftParen + 1 );
dStrcpy( &tempBuffer[ numCharsToLeftParen + uniqueNameLen ], &mState[ numCharsToLeftParen ], tempBufferLen - numCharsToLeftParen - uniqueNameLen );
}
Con::evaluate( tempBuffer );