浏览代码

BattleAI: missing lock

Andrii Danylchenko 1 年之前
父节点
当前提交
07ae33b8f4
共有 1 个文件被更改,包括 6 次插入1 次删除
  1. 6 1
      AI/Nullkiller/Goals/RecruitHero.cpp

+ 6 - 1
AI/Nullkiller/Goals/RecruitHero.cpp

@@ -68,7 +68,12 @@ void RecruitHero::accept(AIGateway * ai)
 		throw cannotFulfillGoalException("Town " + t->nodeName() + " is occupied. Cannot recruit hero!");
 		throw cannotFulfillGoalException("Town " + t->nodeName() + " is occupied. Cannot recruit hero!");
 
 
 	cb->recruitHero(t, heroToHire);
 	cb->recruitHero(t, heroToHire);
-	ai->nullkiller->heroManager->update();
+
+	{
+		std::unique_lock lockGuard(ai->nullkiller->aiStateMutex);
+
+		ai->nullkiller->heroManager->update();
+	}
 
 
 	if(t->visitingHero)
 	if(t->visitingHero)
 		ai->moveHeroToTile(t->visitablePos(), t->visitingHero.get());
 		ai->moveHeroToTile(t->visitablePos(), t->visitingHero.get());