mirror of
https://github.com/vcmi/vcmi.git
synced 2025-07-17 01:32:21 +02:00
Fix potential int32_t overflow when computing total army value
This commit is contained in:
@ -855,7 +855,7 @@ std::string CStackInstance::getName() const
|
|||||||
ui64 CStackInstance::getPower() const
|
ui64 CStackInstance::getPower() const
|
||||||
{
|
{
|
||||||
assert(type);
|
assert(type);
|
||||||
return type->getAIValue() * count;
|
return static_cast<ui64>(type->getAIValue()) * count;
|
||||||
}
|
}
|
||||||
|
|
||||||
ArtBearer::ArtBearer CStackInstance::bearerType() const
|
ArtBearer::ArtBearer CStackInstance::bearerType() const
|
||||||
|
@ -110,7 +110,9 @@ std::string CGCreature::getPopupText(const CGHeroInstance * hero) const
|
|||||||
hoverName += VLC->generaltexth->translate("vcmi.adventureMap.monsterThreat.title");
|
hoverName += VLC->generaltexth->translate("vcmi.adventureMap.monsterThreat.title");
|
||||||
|
|
||||||
int choice;
|
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;
|
if (ratio < 0.1) choice = 0;
|
||||||
else if (ratio < 0.25) choice = 1;
|
else if (ratio < 0.25) choice = 1;
|
||||||
else if (ratio < 0.6) choice = 2;
|
else if (ratio < 0.6) choice = 2;
|
||||||
|
Reference in New Issue
Block a user