Guard against possible illegal array access (by Seven) (#121)

ClosestPanicTrigger() can return -1 but its use in indexing gTacticalStatus.bPanicTriggerIsAlarm was not checked in all the places in the code
This commit is contained in:
Asdow
2023-01-31 20:26:21 +02:00
committed by GitHub
parent f8f8461a65
commit 35109a5615
3 changed files with 13 additions and 11 deletions
+7 -5
View File
@@ -21916,13 +21916,15 @@ void SoldierCollapse( SOLDIERTYPE *pSoldier )
if ( pSoldier->flags.uiStatusFlags & SOLDIER_ENEMY )
{
// sevenfm: bPanicTriggerIsAlarm is always not NULL pointer
//if ( !(gTacticalStatus.bPanicTriggerIsAlarm) && (gTacticalStatus.ubTheChosenOne == pSoldier->ubID) )
if ( gTacticalStatus.ubTheChosenOne == pSoldier->ubID )
{
// replace this guy as the chosen one!
gTacticalStatus.ubTheChosenOne = NOBODY;
MakeClosestEnemyChosenOne( );
auto bPanicTrigger = ClosestPanicTrigger(pSoldier);
if (bPanicTrigger != -1 && !(gTacticalStatus.bPanicTriggerIsAlarm[bPanicTrigger]))
{
// replace this guy as the chosen one!
gTacticalStatus.ubTheChosenOne = NOBODY;
MakeClosestEnemyChosenOne( );
}
}
if ( (gTacticalStatus.uiFlags & TURNBASED) && (gTacticalStatus.uiFlags & INCOMBAT) && (pSoldier->flags.uiStatusFlags & SOLDIER_UNDERAICONTROL) )