From f1a48df6763dc61c962d1fcf26d3d5abb8266622 Mon Sep 17 00:00:00 2001 From: Robert MacGregor Date: Wed, 24 Nov 2021 09:16:09 -0500 Subject: [PATCH] * [GuiInspectorField] BugFix: Correct data corruption potential caused by casting the result of Con::evaluatef directly to a const char. --- Engine/source/gui/editor/inspector/field.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Engine/source/gui/editor/inspector/field.cpp b/Engine/source/gui/editor/inspector/field.cpp index 6ee578512..75d219730 100644 --- a/Engine/source/gui/editor/inspector/field.cpp +++ b/Engine/source/gui/editor/inspector/field.cpp @@ -318,7 +318,8 @@ void GuiInspectorField::setData( const char* data, bool callbacks ) { char buffer[ 2048 ]; expandEscape( buffer, newValue ); - newValue = (const char*)Con::evaluatef( "$f = \"%s\"; return ( %s );", oldValue.c_str(), buffer ); + ConsoleValue result = Con::evaluatef("$f = \"%s\"; return ( %s );", oldValue.c_str(), buffer); + newValue = result.getString(); Con::evaluatef("$f=0;"); } else if( type == TypeS32Vector @@ -354,13 +355,13 @@ void GuiInspectorField::setData( const char* data, bool callbacks ) char buffer[ 2048 ]; expandEscape( buffer, newComponentExpr ); - const char* newComponentVal = Con::evaluatef( "$f = \"%s\"; $v = \"%s\"; return ( %s );", - oldComponentVal, oldValue.c_str(), buffer ); + ConsoleValue result = Con::evaluatef("$f = \"%s\"; $v = \"%s\"; return ( %s );", + oldComponentVal, oldValue.c_str(), buffer); Con::evaluatef("$f=0;$v=0;"); if( !isFirst ) strNew.append( ' ' ); - strNew.append( newComponentVal ); + strNew.append( result.getString() ); isFirst = false; }