From b431151bacad2c0bb90efa3192edc712685f9b86 Mon Sep 17 00:00:00 2001 From: samisalreadytaken <46823719+samisalreadytaken@users.noreply.github.com> Date: Sun, 8 Jun 2025 13:21:44 +0300 Subject: [PATCH] Optimise string read in vscript save/restore --- sp/src/vscript/vscript_squirrel.cpp | 22 +++------------------- 1 file changed, 3 insertions(+), 19 deletions(-) diff --git a/sp/src/vscript/vscript_squirrel.cpp b/sp/src/vscript/vscript_squirrel.cpp index 7c1ac92f..f5379f0f 100644 --- a/sp/src/vscript/vscript_squirrel.cpp +++ b/sp/src/vscript/vscript_squirrel.cpp @@ -3835,26 +3835,10 @@ void SquirrelVM::ReadObject( SQObjectPtr &pObj, CUtlBuffer* pBuffer, ReadStateMa case OT_STRING: { int len = pBuffer->GetInt(); - char *psz; - - if ( len < 1024 ) - { - psz = (char*)stackalloc( len ); - } - else - { - psz = (char*)malloc( len ); - } - - pBuffer->Get( psz, len ); - + char *psz = (char*)pBuffer->PeekGet( 0 ); + pBuffer->SeekGet( CUtlBuffer::SEEK_CURRENT, len ); + Assert( pBuffer->IsValid() ); obj._unVal.pString = SQString::Create( _ss(vm_), psz, len ); - - if ( len >= 1024 ) - { - free( psz ); - } - break; } case OT_TABLE: