From f902b014972b8934a5cd0da773a4728f2da85ed7 Mon Sep 17 00:00:00 2001 From: Asdow <20314541+Asdow@users.noreply.github.com> Date: Tue, 18 Nov 2025 22:45:37 +0200 Subject: [PATCH] Fix ubID underflow Fixes illegal memory access if we tried to find previous merc and our currently selected one has ubID == 0 --- Tactical/Overhead.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Tactical/Overhead.cpp b/Tactical/Overhead.cpp index dd79d2ad..ca80c096 100644 --- a/Tactical/Overhead.cpp +++ b/Tactical/Overhead.cpp @@ -4896,7 +4896,13 @@ SoldierID FindPrevActiveAndAliveMerc( SOLDIERTYPE *pSoldier, BOOLEAN fGoodForLes SoldierID bLastTeamID = gTacticalStatus.Team[ pSoldier->bTeam ].bFirstID; SoldierID cnt = pSoldier->ubID - 1; - for ( ; cnt > bLastTeamID; --cnt ) + // Guard against ubID underflow. We'll start searching for previous merc from the lastID in that case + if ( cnt >= NOBODY ) + { + cnt = gTacticalStatus.Team[pSoldier->bTeam].bLastID; + } + + for ( ; cnt >= bLastTeamID; --cnt ) { pTeamSoldier = cnt; if ( fOnlyRegularMercs )