瀏覽代碼

Fix possible access to non-existing building

Ivan Savenko 2 年之前
父節點
當前提交
942f8bbf05
共有 1 個文件被更改,包括 6 次插入0 次删除
  1. 6 0
      lib/mapObjects/CGTownInstance.cpp

+ 6 - 0
lib/mapObjects/CGTownInstance.cpp

@@ -996,6 +996,12 @@ CBuilding::TRequired CGTownInstance::genBuildingRequirements(const BuildingID &
 	std::function<CBuilding::TRequired::Variant(const BuildingID &)> dependTest =
 	[&](const BuildingID & id) -> CBuilding::TRequired::Variant
 	{
+		if (town->buildings.count(id) == 0)
+		{
+			logMod->error("Invalid building ID %d in building dependencies!", id.getNum());
+			return CBuilding::TRequired::OperatorAll();
+		}
+
 		const CBuilding * build = town->buildings.at(id);
 		CBuilding::TRequired::OperatorAll requirements;