From 7bb7c543172533b5046eb8376a7f256ee00520dc Mon Sep 17 00:00:00 2001 From: Asdow <20314541+Asdow@users.noreply.github.com> Date: Mon, 21 Jul 2025 03:30:22 +0300 Subject: [PATCH] Guard against integer underflow (#462) --- Strategic/Strategic AI.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/Strategic/Strategic AI.cpp b/Strategic/Strategic AI.cpp index 378a3584..8a3ca8a1 100644 --- a/Strategic/Strategic AI.cpp +++ b/Strategic/Strategic AI.cpp @@ -7151,15 +7151,16 @@ void InitializeGroup( const GROUP_TYPE groupType, const UINT8 groupSize, UINT8 & tankCount++; } - if ( gGameExternalOptions.fASDAssignsJeeps && ASDSoldierUpgradeToJeep( ) ) + if ( troopCount > 0 && gGameExternalOptions.fASDAssignsJeeps && ASDSoldierUpgradeToJeep( ) ) { troopCount--; jeepCount++; } - if ( gGameExternalOptions.fASDAssignsRobots && ASDSoldierUpgradeToRobot() ) + if ( troopCount > 0 && gGameExternalOptions.fASDAssignsRobots && ASDSoldierUpgradeToRobot() ) { - const int numRobots = 1 + Random(difficultyMod); + // Limit amount of robots, if randomized difficulty bonus would cause us to go over the troopCount amount + const int numRobots = min( (1 + Random(difficultyMod)), troopCount); troopCount -= numRobots; robotCount += numRobots; }