Selaa lähdekoodia

Fix possible crash on ending battle via on-timer action

Ivan Savenko 1 vuosi sitten
vanhempi
sitoutus
c78382c515
1 muutettua tiedostoa jossa 7 lisäystä ja 1 poistoa
  1. 7 1
      server/TurnTimerHandler.cpp

+ 7 - 1
server/TurnTimerHandler.cpp

@@ -94,8 +94,14 @@ void TurnTimerHandler::update(int waitTime)
 			if(gs->isPlayerMakingTurn(player))
 				onPlayerMakingTurn(player, waitTime);
 		
+		// create copy for iterations - battle might end during onBattleLoop call
+		std::vector<BattleID> ongoingBattles;
+
 		for (auto & battle : gs->currentBattles)
-			onBattleLoop(battle->battleID, waitTime);
+			ongoingBattles.push_back(battle->battleID);
+
+		for (auto & battleID : ongoingBattles)
+			onBattleLoop(battleID, waitTime);
 	}
 }