Sfoglia il codice sorgente

Fix possible access to non-existing building

Ivan Savenko 2 anni fa
parent
commit
942f8bbf05
1 ha cambiato i file con 6 aggiunte e 0 eliminazioni
  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 =
 	std::function<CBuilding::TRequired::Variant(const BuildingID &)> dependTest =
 	[&](const BuildingID & id) -> CBuilding::TRequired::Variant
 	[&](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);
 		const CBuilding * build = town->buildings.at(id);
 		CBuilding::TRequired::OperatorAll requirements;
 		CBuilding::TRequired::OperatorAll requirements;