From bf19942d7296ad21cafeea5daaa0dfebf270a567 Mon Sep 17 00:00:00 2001 From: xezon <4720891+xezon@users.noreply.github.com> Date: Thu, 10 Apr 2025 21:29:44 +0200 Subject: [PATCH 1/2] [ZH] Refactor GameLogic::reset to avoid "vector subscript out of range" debug error --- .../Code/GameEngine/Source/GameLogic/System/GameLogic.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp index e5441107d70..e3f9e287952 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp @@ -436,6 +436,10 @@ void GameLogic::reset( void ) m_thingTemplateBuildableOverrides.clear(); m_controlBarOverrides.clear(); + // destroy all objects + // TheSuperHackers @info xezon 10/04/2025 Objects need to be destroyed before clearing the object vector. + destroyAllObjectsImmediate(); + // set the hash to be rather large. We need to optimize this value later. // m_objHash.clear(); // m_objHash.resize(OBJ_HASH_SIZE); @@ -447,9 +451,6 @@ void GameLogic::reset( void ) m_mouseVisibleMemory = TRUE; setFPMode(); - // destroy all objects - destroyAllObjectsImmediate(); - m_nextObjID = (ObjectID)1; m_frameObjectsChangedTriggerAreas = 0; From c970f44625538bfcd284a06d30dbeb8f5cb64be9 Mon Sep 17 00:00:00 2001 From: Mauller <26652186+Mauller@users.noreply.github.com> Date: Thu, 10 Apr 2025 22:41:07 +0100 Subject: [PATCH 2/2] [GEN] Refactor GameLogic::reset to avoid "vector subscript out of range" debug error --- .../Code/GameEngine/Source/GameLogic/System/GameLogic.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp b/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp index 17eacc816b3..262742debdb 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp @@ -421,6 +421,10 @@ void GameLogic::reset( void ) m_thingTemplateBuildableOverrides.clear(); m_controlBarOverrides.clear(); + // destroy all objects + // TheSuperHackers @info xezon 10/04/2025 Objects need to be destroyed before clearing the object hash. + destroyAllObjectsImmediate(); + // set the hash to be rather large. We need to optimize this value later. m_objHash.clear(); #if USING_STLPORT @@ -433,9 +437,6 @@ void GameLogic::reset( void ) m_mouseVisibleMemory = TRUE; setFPMode(); - // destroy all objects - destroyAllObjectsImmediate(); - m_nextObjID = (ObjectID)1; m_frameObjectsChangedTriggerAreas = 0;