소스 검색

Fix possible crash on ending battle via on-timer action

Ivan Savenko 1 년 전
부모
커밋
c78382c515
1개의 변경된 파일7개의 추가작업 그리고 1개의 파일을 삭제
  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);
 	}
 }