Browse Source

Only delete CQuest in CMap destructor and not with IQuestObject

Quest information must remain accessible even if map object removed. Fix issue 2472
Arseniy Shestakov 9 years ago
parent
commit
1e60ba6516
2 changed files with 6 additions and 1 deletions
  1. 3 1
      lib/mapObjects/CQuest.cpp
  2. 3 0
      lib/mapping/CMap.cpp

+ 3 - 1
lib/mapObjects/CQuest.cpp

@@ -498,7 +498,9 @@ IQuestObject::IQuestObject():
 
 IQuestObject::~IQuestObject()
 {
-	delete quest;
+	///Information about quest should remain accessible even if IQuestObject removed from map
+	///All CQuest objects are freed in CMap destructor
+	//delete quest;
 }
 
 bool IQuestObject::checkQuest(const CGHeroInstance* h) const

+ 3 - 0
lib/mapping/CMap.cpp

@@ -245,6 +245,9 @@ CMap::~CMap()
 
 	for(auto obj : objects)
 		obj.dellNull();
+
+	for(auto quest : quests)
+		quest.dellNull();
 }
 
 void CMap::removeBlockVisTiles(CGObjectInstance * obj, bool total)