Use a circular buffer for getReturnBuffer because StringStack's would get clobbered too quickly

This commit is contained in:
Glenn Smith 2018-03-28 20:52:46 -04:00
parent 593680fb3f
commit 18dee487f9
3 changed files with 137 additions and 4 deletions

View file

@ -41,6 +41,7 @@
#include "core/frameAllocator.h"
#include "console/codeInterpreter.h"
#include "console/returnBuffer.h"
#ifndef TORQUE_TGB_ONLY
#include "materials/materialDefinition.h"
@ -101,17 +102,17 @@ F64 consoleStringToNumber(const char *str, StringTableEntry file, U32 line)
namespace Con
{
ReturnBuffer retBuffer;
char *getReturnBuffer(U32 bufferSize)
{
return STR.getReturnBuffer(bufferSize);
return retBuffer.getBuffer(bufferSize);
}
char *getReturnBuffer(const char *stringToCopy)
{
U32 len = dStrlen(stringToCopy) + 1;
char *ret = STR.getReturnBuffer(len);
char *ret = retBuffer.getBuffer(len);
dMemcpy(ret, stringToCopy, len);
return ret;
}
@ -119,7 +120,7 @@ namespace Con
char* getReturnBuffer(const String& str)
{
const U32 size = str.size();
char* ret = STR.getReturnBuffer(size);
char* ret = retBuffer.getBuffer(size);
dMemcpy(ret, str.c_str(), size);
return ret;
}