Преглед на файлове

Merge pull request #4539 from IvanSavenko/crashfix

Crashfixes
Ivan Savenko преди 1 година
родител
ревизия
727cd2e9e1
променени са 2 файла, в които са добавени 6 реда и са изтрити 3 реда
  1. 5 2
      AI/BattleAI/BattleExchangeVariant.cpp
  2. 1 1
      lib/CPlayerState.h

+ 5 - 2
AI/BattleAI/BattleExchangeVariant.cpp

@@ -376,11 +376,14 @@ MoveTarget BattleExchangeEvaluator::findMoveTowardsUnreachable(
 				logAi->trace("New high score");
 				logAi->trace("New high score");
 #endif
 #endif
 
 
-				for(BattleHex enemyHex : enemy->getAttackableHexes(activeStack))
+				for(const BattleHex & initialEnemyHex : enemy->getAttackableHexes(activeStack))
 				{
 				{
-					while(!flying && dists.distances[enemyHex] > speed)
+					BattleHex enemyHex = initialEnemyHex;
+
+					while(!flying && dists.distances[enemyHex] > speed && dists.predecessors.at(enemyHex).isValid())
 					{
 					{
 						enemyHex = dists.predecessors.at(enemyHex);
 						enemyHex = dists.predecessors.at(enemyHex);
+
 						if(dists.accessibility[enemyHex] == EAccessibility::ALIVE_STACK)
 						if(dists.accessibility[enemyHex] == EAccessibility::ALIVE_STACK)
 						{
 						{
 							auto defenderToBypass = hb->battleGetUnitByPos(enemyHex);
 							auto defenderToBypass = hb->battleGetUnitByPos(enemyHex);

+ 1 - 1
lib/CPlayerState.h

@@ -104,7 +104,7 @@ public:
 
 
 	bool checkVanquished() const
 	bool checkVanquished() const
 	{
 	{
-		return ownedObjects.empty();
+		return getHeroes().empty() && getTowns().empty();
 	}
 	}
 
 
 	template <typename Handler> void serialize(Handler &h)
 	template <typename Handler> void serialize(Handler &h)