1
0
mirror of https://github.com/vcmi/vcmi.git synced 2025-01-12 02:28:11 +02:00

Fix potential int32_t overflow when computing total army value

This commit is contained in:
Ivan Savenko 2024-10-02 19:48:08 +00:00
parent cef7466c71
commit f5c2772f8d
2 changed files with 4 additions and 2 deletions

View File

@ -855,7 +855,7 @@ std::string CStackInstance::getName() const
ui64 CStackInstance::getPower() const
{
assert(type);
return type->getAIValue() * count;
return static_cast<ui64>(type->getAIValue()) * count;
}
ArtBearer::ArtBearer CStackInstance::bearerType() const

View File

@ -110,7 +110,9 @@ std::string CGCreature::getPopupText(const CGHeroInstance * hero) const
hoverName += VLC->generaltexth->translate("vcmi.adventureMap.monsterThreat.title");
int choice;
double ratio = (static_cast<double>(getArmyStrength()) / hero->getTotalStrength());
uint64_t armyStrength = getArmyStrength();
uint64_t heroStrength = hero->getTotalStrength();
double ratio = static_cast<double>(armyStrength) / heroStrength;
if (ratio < 0.1) choice = 0;
else if (ratio < 0.25) choice = 1;
else if (ratio < 0.6) choice = 2;