From f08931f9b86d5d6431a9f6429ad535f15d6b610b Mon Sep 17 00:00:00 2001 From: "seer-by-sentry[bot]" <157164994+seer-by-sentry[bot]@users.noreply.github.com> Date: Sat, 8 Nov 2025 13:28:15 +0000 Subject: [PATCH] DozerAIUpdate: Add null check for controlling player before accessing player index --- .../GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp | 7 ++++++- .../GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp b/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp index 449cc779518..5dae573b054 100644 --- a/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp +++ b/Generals/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp @@ -1074,7 +1074,12 @@ StateReturnType DozerPrimaryIdleState::update( void ) // if( ai->isIdle() && !m_isMarkedAsIdle && !dozer->isEffectivelyDead()) { - m_idlePlayerNumber = dozer->getControllingPlayer()->getPlayerIndex(); + Player *controllingPlayer = dozer->getControllingPlayer(); + if( !controllingPlayer ) + { + return STATE_FAILURE; + } + m_idlePlayerNumber = controllingPlayer->getPlayerIndex(); TheInGameUI->addIdleWorker(getMachineOwner()); m_isMarkedAsIdle = TRUE; getMachineOwner()->setWeaponSetFlag(WEAPONSET_MINE_CLEARING_DETAIL);//maybe go clear some mines, if I feel like it diff --git a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp index 59263b50e3c..3b82c70b491 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameLogic/Object/Update/AIUpdate/DozerAIUpdate.cpp @@ -1079,7 +1079,12 @@ StateReturnType DozerPrimaryIdleState::update( void ) // if( ai->isIdle() && !m_isMarkedAsIdle && !dozer->isEffectivelyDead()) { - m_idlePlayerNumber = dozer->getControllingPlayer()->getPlayerIndex(); + Player *controllingPlayer = dozer->getControllingPlayer(); + if( !controllingPlayer ) + { + return STATE_FAILURE; + } + m_idlePlayerNumber = controllingPlayer->getPlayerIndex(); TheInGameUI->addIdleWorker(getMachineOwner()); m_isMarkedAsIdle = TRUE; getMachineOwner()->setWeaponSetFlag(WEAPONSET_MINE_CLEARING_DETAIL);//maybe go clear some mines, if I feel like it