Jelajahi Sumber

- fixed uninitialized pointer

Ivan Savenko 12 tahun lalu
induk
melakukan
2ea1051395
2 mengubah file dengan 33 tambahan dan 0 penghapusan
  1. 27 0
      lib/CTownHandler.cpp
  2. 6 0
      lib/CTownHandler.h

+ 27 - 0
lib/CTownHandler.cpp

@@ -56,6 +56,30 @@ si32 CBuilding::getDistance(BuildingID buildID) const
 	return -1;
 }
 
+CFaction::CFaction()
+{
+
+}
+
+CFaction::~CFaction()
+{
+	delete town;
+}
+
+CTown::CTown()
+{
+
+}
+
+CTown::~CTown()
+{
+	BOOST_FOREACH(auto build, buildings)
+		build.second.dellNull();
+
+	BOOST_FOREACH(CStructure * str, clientInfo.structures)
+		delete str;
+}
+
 CTownHandler::CTownHandler()
 {
 	VLC->townh = this;
@@ -554,6 +578,9 @@ CFaction * CTownHandler::loadFromJson(const JsonNode &source)
 		faction->town->faction = faction;
 		loadTown(*faction->town, source["town"]);
 	}
+	else
+		faction->town = nullptr;
+
 	if (!source["puzzleMap"].isNull())
 		loadPuzzle(*faction, source["puzzleMap"]);
 

+ 6 - 0
lib/CTownHandler.h

@@ -97,6 +97,9 @@ struct DLL_LINKAGE SPuzzleInfo
 class CFaction
 {
 public:
+	CFaction();
+	~CFaction();
+
 	std::string name; //town name, by default - from TownName.txt
 
 	TFaction index;
@@ -122,6 +125,9 @@ public:
 class DLL_LINKAGE CTown
 {
 public:
+	CTown();
+	~CTown();
+
 	CFaction * faction;
 
 	std::vector<std::string> names; //names of the town instances