Browse Source

Hack-fix crash in CGTownInstance::genBuildingRequirements related to alternate town buildings
* this disables features of #211, but actual problem may be deeper inside logical expressions

AlexVinS 9 years ago
parent
commit
cf143cd257
1 changed files with 6 additions and 6 deletions
  1. 6 6
      lib/mapObjects/CGTownInstance.cpp

+ 6 - 6
lib/mapObjects/CGTownInstance.cpp

@@ -1128,6 +1128,8 @@ CBuilding::TRequired CGTownInstance::genBuildingRequirements(BuildingID buildID,
 {
 	const CBuilding * building = town->buildings.at(buildID);
 
+	deep = false;//FIXME: deep test crashes with alternate buildings
+
 	std::function<CBuilding::TRequired::Variant(const BuildingID &)> dependTest =
 	[&](const BuildingID & id) -> CBuilding::TRequired::Variant
 	{
@@ -1136,12 +1138,10 @@ CBuilding::TRequired CGTownInstance::genBuildingRequirements(BuildingID buildID,
 
 		if (!hasBuilt(id))
 		{
-			requirements.expressions.push_back(id);
-
-			if (!deep)
-			{
-				return requirements;
-			}
+			if (deep)
+				requirements.expressions.push_back(id);
+			else
+				return id;
 		}
 
 		if (build->upgrade != BuildingID::NONE)