From 2ac70a71c5c02d4716b183810da515772a40d667 Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Sun, 12 Jul 2026 13:51:50 +0200 Subject: [PATCH] bugfix(controlbar): Fix possible divisions by zero in ControlBar code. --- .../GameClient/GUI/ControlBar/ControlBar.cpp | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/Core/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp b/Core/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp index 2c90a3d80d2..29f01b5d525 100644 --- a/Core/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp +++ b/Core/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp @@ -424,8 +424,15 @@ void ControlBar::populatePurchaseScience( Player* player ) win = TheWindowManager->winGetWindowFromId( m_contextParent[ CP_PURCHASE_SCIENCE ], TheNameKeyGenerator->nameToKey( "GeneralsExpPoints.wnd:ProgressBarExperience" ) ); if(win) { - Int progress; - progress = ((player->getSkillPoints() - player->getSkillPointsLevelDown()) * 100) /(player->getSkillPointsLevelUp() - player->getSkillPointsLevelDown()); + const Int skillPointsRequired = player->getSkillPointsLevelUp() - player->getSkillPointsLevelDown(); + Int progress = 0; + + // TheSuperHackers @bugfix Caball009 12/07/2026 Prevent possible division by zero. + if (skillPointsRequired > 0) + { + progress = ((player->getSkillPoints() - player->getSkillPointsLevelDown()) * 100) / skillPointsRequired; + } + GadgetProgressBarSetProgress(win, progress); } @@ -483,8 +490,15 @@ void ControlBar::updateContextPurchaseScience() win = TheWindowManager->winGetWindowFromId( m_contextParent[ CP_PURCHASE_SCIENCE ], TheNameKeyGenerator->nameToKey( "GeneralsExpPoints.wnd:ProgressBarExperience" ) ); if(win) { - Int progress; - progress = ((player->getSkillPoints() - player->getSkillPointsLevelDown()) * 100) /(player->getSkillPointsLevelUp() - player->getSkillPointsLevelDown()); + const Int skillPointsRequired = player->getSkillPointsLevelUp() - player->getSkillPointsLevelDown(); + Int progress = 0; + + // TheSuperHackers @bugfix Caball009 12/07/2026 Prevent possible division by zero. + if (skillPointsRequired > 0) + { + progress = ((player->getSkillPoints() - player->getSkillPointsLevelDown()) * 100) / skillPointsRequired; + } + GadgetProgressBarSetProgress(win, progress); }