diff --git a/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp b/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp index 9d7f4cd7e7..41837b24ca 100644 --- a/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp +++ b/Generals/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp @@ -409,8 +409,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()); + Int progress = 0; + Int skillPointsRequired = player->getSkillPointsLevelUp() - player->getSkillPointsLevelDown(); + + // TheSuperHackers @bugfix Mauller 04/05/2025 Prevent possible division by zero + if ( skillPointsRequired > 0 ) + { + progress = ( ((player->getSkillPoints() - player->getSkillPointsLevelDown()) * 100) / skillPointsRequired ); + } + GadgetProgressBarSetProgress(win, progress); } @@ -468,8 +475,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()); + Int progress = 0; + Int skillPointsRequired = player->getSkillPointsLevelUp() - player->getSkillPointsLevelDown(); + + // TheSuperHackers @bugfix Mauller 04/05/2025 Prevent possible division by zero + if ( skillPointsRequired > 0 ) + { + progress = ( ((player->getSkillPoints() - player->getSkillPointsLevelDown()) * 100) / skillPointsRequired ); + } + GadgetProgressBarSetProgress(win, progress); } diff --git a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp index f07e61c8ca..a336166d9a 100644 --- a/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp +++ b/GeneralsMD/Code/GameEngine/Source/GameClient/GUI/ControlBar/ControlBar.cpp @@ -413,8 +413,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()); + Int progress = 0; + Int skillPointsRequired = player->getSkillPointsLevelUp() - player->getSkillPointsLevelDown(); + + // TheSuperHackers @bugfix Mauller 04/05/2025 Prevent possible division by zero + if ( skillPointsRequired > 0 ) + { + progress = ( ((player->getSkillPoints() - player->getSkillPointsLevelDown()) * 100) / skillPointsRequired ); + } + GadgetProgressBarSetProgress(win, progress); } @@ -472,8 +479,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()); + Int progress = 0; + Int skillPointsRequired = player->getSkillPointsLevelUp() - player->getSkillPointsLevelDown(); + + // TheSuperHackers @bugfix Mauller 04/05/2025 Prevent possible division by zero + if ( skillPointsRequired > 0 ) + { + progress = ( ((player->getSkillPoints() - player->getSkillPointsLevelDown()) * 100) / skillPointsRequired ); + } + GadgetProgressBarSetProgress(win, progress); }