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); }