Fix temporary buffer for scripting conversions.

This commit is contained in:
Jeff Hutchinson 2021-09-04 21:25:11 -04:00
parent 478a04bea8
commit c16b88d709
4 changed files with 32 additions and 7 deletions

View file

@ -46,21 +46,29 @@
extern StringStack STR;
extern ConsoleValueStack<4096> gCallStack;
char ConsoleValue::sConversionBuffer[ConversionBufferSize];
Vector<ConsoleValue::ConversionBuffer> ConsoleValue::sConversionBuffer;
void ConsoleValue::init()
{
dMemset(sConversionBuffer, '\0', ConversionBufferSize);
sConversionBuffer.reserve(8192);
}
void ConsoleValue::resetConversionBuffer()
{
sConversionBuffer.resetAndTreatAsScratchBuffer();
}
char* ConsoleValue::convertToBuffer() const
{
ConversionBuffer conversion;
if (type == ConsoleValueType::cvFloat)
dSprintf(sConversionBuffer, ConversionBufferSize, "%.9g", f);
dSprintf(conversion.buffer, ConversionBufferStride, "%.9g", f);
else
dSprintf(sConversionBuffer, ConversionBufferSize, "%lld", i);
dSprintf(conversion.buffer, ConversionBufferStride, "%lld", i);
return sConversionBuffer;
sConversionBuffer.push_back(std::move(conversion));
return sConversionBuffer.last().buffer;
}
const char* ConsoleValue::getConsoleData() const