mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +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 | ||||
| { | ||||
| 	assert(type); | ||||
| 	return type->getAIValue() * count; | ||||
| 	return static_cast<ui64>(type->getAIValue()) * count; | ||||
| } | ||||
|  | ||||
| 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"); | ||||
|  | ||||
| 		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; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user