Skip to content

Commit bbf0830

Browse files
authored
[GEN][ZH] Refactor GameLogic::reset to avoid "vector subscript out of range" debug error (#645)
1 parent b76ba84 commit bbf0830

File tree

2 files changed

+8
-6
lines changed

2 files changed

+8
-6
lines changed

Generals/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,10 @@ void GameLogic::reset( void )
421421
m_thingTemplateBuildableOverrides.clear();
422422
m_controlBarOverrides.clear();
423423

424+
// destroy all objects
425+
// TheSuperHackers @info xezon 10/04/2025 Objects need to be destroyed before clearing the object hash.
426+
destroyAllObjectsImmediate();
427+
424428
// set the hash to be rather large. We need to optimize this value later.
425429
m_objHash.clear();
426430
#if USING_STLPORT
@@ -433,9 +437,6 @@ void GameLogic::reset( void )
433437
m_mouseVisibleMemory = TRUE;
434438
setFPMode();
435439

436-
// destroy all objects
437-
destroyAllObjectsImmediate();
438-
439440
m_nextObjID = (ObjectID)1;
440441

441442
m_frameObjectsChangedTriggerAreas = 0;

GeneralsMD/Code/GameEngine/Source/GameLogic/System/GameLogic.cpp

+4-3
Original file line numberDiff line numberDiff line change
@@ -436,6 +436,10 @@ void GameLogic::reset( void )
436436
m_thingTemplateBuildableOverrides.clear();
437437
m_controlBarOverrides.clear();
438438

439+
// destroy all objects
440+
// TheSuperHackers @info xezon 10/04/2025 Objects need to be destroyed before clearing the object vector.
441+
destroyAllObjectsImmediate();
442+
439443
// set the hash to be rather large. We need to optimize this value later.
440444
// m_objHash.clear();
441445
// m_objHash.resize(OBJ_HASH_SIZE);
@@ -447,9 +451,6 @@ void GameLogic::reset( void )
447451
m_mouseVisibleMemory = TRUE;
448452
setFPMode();
449453

450-
// destroy all objects
451-
destroyAllObjectsImmediate();
452-
453454
m_nextObjID = (ObjectID)1;
454455

455456
m_frameObjectsChangedTriggerAreas = 0;

0 commit comments

Comments
 (0)