Fix buffer corruption.

This commit is contained in:
Jeff Hutchinson 2021-09-07 21:52:36 -04:00
parent 6d93e96dc3
commit 27a4868b6e
4 changed files with 14 additions and 7 deletions

View file

@ -512,10 +512,13 @@ bool GameConnection::readConnectRequest(BitStream *stream, const char **errorStr
connectArgv[2].setString(buffer);
// NOTE: Cannot convert over to IMPLEMENT_CALLBACK as it has variable args.
const char *ret = Con::execute(this, mConnectArgc + 3, connectArgv);
if(ret[0])
ConsoleValue returnValue = Con::execute(this, mConnectArgc + 3, connectArgv);
StringTableEntry returnStr = StringTable->insert(returnValue.getString());
if(returnStr[0])
{
*errorString = ret;
*errorString = returnStr;
return false;
}
return true;

View file

@ -2286,7 +2286,8 @@ DefineEngineStringlyVariadicFunction( call, const char *, 2, 0, "( string functi
"@endtsexample\n\n"
"@ingroup Scripting" )
{
return Con::execute( argc - 1, argv + 1 );
ConsoleValue returnValue = Con::execute(argc - 1, argv + 1);
return Con::getReturnBuffer(returnValue.getString());
}
//-----------------------------------------------------------------------------

View file

@ -2972,7 +2972,8 @@ DefineEngineStringlyVariadicMethod( SimObject, call, const char*, 3, 0, "( strin
"@return The result of the method call." )
{
argv[1].setString(argv[2]);
return Con::execute( object, argc - 1, argv + 1 );
ConsoleValue returnValue = Con::execute(object, argc - 1, argv + 1);
return Con::getReturnBuffer(returnValue.getString());
}
//-----------------------------------------------------------------------------

View file

@ -120,12 +120,14 @@ void PopupMenu::handleSelectEvent(U32 popID, U32 command)
//-----------------------------------------------------------------------------
bool PopupMenu::onMessageReceived(StringTableEntry queue, const char* event, const char* data)
{
return Con::executef(this, "onMessageReceived", queue, event, data);
ConsoleValue returnValue = Con::executef(this, "onMessageReceived", queue, event, data);
return returnValue.getBool();
}
bool PopupMenu::onMessageObjectReceived(StringTableEntry queue, Message *msg )
{
return Con::executef(this, "onMessageReceived", queue, Con::getIntArg(msg->getId()));
ConsoleValue returnValue = Con::executef(this, "onMessageReceived", queue, Con::getIntArg(msg->getId()));
return returnValue.getBool();
}
//////////////////////////////////////////////////////////////////////////