From ec6867fa4bf987b14a34a857c1911eafb7cf15eb Mon Sep 17 00:00:00 2001 From: rftr Date: Thu, 8 Sep 2022 18:09:07 +0000 Subject: [PATCH] changed return type of CountAllMilitiaInFiveSectors() from UINT8 to UINT16 to fix an overflow during militia reinforcement git-svn-id: https://ja2svn.mooo.com/source/ja2/trunk/GameSource/ja2_v1.13/Build@9400 3b4a5df2-a311-0410-b5c6-a8a6f20db521 --- Strategic/Auto Resolve.cpp | 3 ++- Strategic/Reinforcement.cpp | 4 ++-- Strategic/Reinforcement.h | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/Strategic/Auto Resolve.cpp b/Strategic/Auto Resolve.cpp index 0d13b4bf..2e4da9ed 100644 --- a/Strategic/Auto Resolve.cpp +++ b/Strategic/Auto Resolve.cpp @@ -3116,7 +3116,8 @@ void CalculateAutoResolveInfo() } gfTransferTacticalOppositionToAutoResolve = FALSE; - gpAR->ubCivs = CountAllMilitiaInFiveSectors( gpAR->ubSectorX, gpAR->ubSectorY ); + const UINT16 militia = CountAllMilitiaInFiveSectors( gpAR->ubSectorX, gpAR->ubSectorY ); + gpAR->ubCivs = min(militia, MAXUINT8); gpAR->ubMercs = 0; VObjectDesc.fCreateFlags = VOBJECT_CREATE_FROMFILE; pGroup = gpGroupList; diff --git a/Strategic/Reinforcement.cpp b/Strategic/Reinforcement.cpp index 99bf1123..3840769f 100644 --- a/Strategic/Reinforcement.cpp +++ b/Strategic/Reinforcement.cpp @@ -207,9 +207,9 @@ UINT8 GetAdjacentSectors( UINT8 pSectors[4], INT16 sSectorX, INT16 sSectorY ) return ubCounter; } -UINT8 CountAllMilitiaInFiveSectors(INT16 sMapX, INT16 sMapY) +UINT16 CountAllMilitiaInFiveSectors(INT16 sMapX, INT16 sMapY) { - UINT8 ubResult = 0; + UINT16 ubResult = 0; UINT16 pusMoveDir[4][3]; UINT8 ubDirNumber, ubIndex; diff --git a/Strategic/Reinforcement.h b/Strategic/Reinforcement.h index 87f3e645..543ff041 100644 --- a/Strategic/Reinforcement.h +++ b/Strategic/Reinforcement.h @@ -6,7 +6,7 @@ void GetNumberOfEnemiesInFiveSectors( INT16 sSectorX, INT16 sSectorY, UINT8 *pub void ActivateTurncoatsForAutoResolve( INT16 sSectorX, INT16 sSectorY ); BOOLEAN IsGroupInARightSectorToReinforce( GROUP *pGroup, INT16 sSectorX, INT16 sSectorY ); UINT8 GetAdjacentSectors( UINT8 pSectors[4], INT16 sSectorX, INT16 sSectorY ); -UINT8 CountAllMilitiaInFiveSectors(INT16 sMapX, INT16 sMapY); +UINT16 CountAllMilitiaInFiveSectors(INT16 sMapX, INT16 sMapY); UINT8 NumEnemiesInFiveSectors( INT16 sMapX, INT16 sMapY ); //For Tactical