Explorar o código

fix crash on heroRoles.clear()

MichalZr6 hai 1 ano
pai
achega
ca3d81f047
Modificáronse 1 ficheiros con 6 adicións e 3 borrados
  1. 6 3
      AI/Nullkiller/Analyzers/HeroManager.cpp

+ 6 - 3
AI/Nullkiller/Analyzers/HeroManager.cpp

@@ -126,20 +126,23 @@ void HeroManager::update()
 	}
 
 	std::sort(myHeroes.begin(), myHeroes.end(), scoreSort);
-	heroRoles.clear();
+	
+	std::map<HeroPtr, HeroRole> newHeroRoles;
 
 	for(auto hero : myHeroes)
 	{
 		if(hero->patrol.patrolling)
 		{
-			heroRoles[hero] = HeroRole::MAIN;
+			newHeroRoles[hero] = HeroRole::MAIN;
 		}
 		else
 		{
-			heroRoles[hero] = (globalMainCount--) > 0 ? HeroRole::MAIN : HeroRole::SCOUT;
+			newHeroRoles[hero] = (globalMainCount--) > 0 ? HeroRole::MAIN : HeroRole::SCOUT;
 		}
 	}
 
+	heroRoles = std::move(newHeroRoles);
+
 	for(auto hero : myHeroes)
 	{
 		logAi->trace("Hero %s has role %s", hero->getNameTranslated(), heroRoles[hero] == HeroRole::MAIN ? "main" : "scout");