Browse Source

Some clearing/protection of quests being deleted

Emagi 1 year ago
parent
commit
814a9ef958
2 changed files with 17 additions and 0 deletions
  1. 4 0
      EQ2/source/WorldServer/Player.cpp
  2. 13 0
      EQ2/source/WorldServer/Quests.cpp

+ 4 - 0
EQ2/source/WorldServer/Player.cpp

@@ -136,9 +136,12 @@ Player::~Player(){
 	for (itr = player_spawn_quests_required.begin(); itr != player_spawn_quests_required.end(); itr++){
 		safe_delete(itr->second);
 	}
+	player_spawn_quests_required.clear();
+	
 	for (itr = player_spawn_history_required.begin(); itr != player_spawn_history_required.end(); itr++){
 		safe_delete(itr->second);
 	}
+	player_spawn_history_required.clear();
 
 	map<int8, map<int8, vector<HistoryData*> > >::iterator itr1;
 	map<int8, vector<HistoryData*> >::iterator itr2;
@@ -153,6 +156,7 @@ Player::~Player(){
 			}
 		}
 	}
+	m_characterHistory.clear();
 
 	mLUAHistory.writelock();
 	map<int32, LUAHistory*>::iterator itr4;

+ 13 - 0
EQ2/source/WorldServer/Quests.cpp

@@ -396,16 +396,29 @@ Quest::Quest(Quest* old_quest){
 }
 
 Quest::~Quest(){
+	
+	MQuestSteps.lock();
 	for(int32 i=0;i<quest_steps.size();i++)
 		safe_delete(quest_steps[i]);
+	quest_steps.clear();
+	MQuestSteps.unlock();
+	
 	for(int32 i=0;i<prereq_items.size();i++)
 		safe_delete(prereq_items[i]);
+	prereq_items.clear();
+	
 	for(int32 i=0;i<reward_items.size();i++)
 		safe_delete(reward_items[i]);
+	reward_items.clear();
+	
 	for(int32 i=0;i<tmp_reward_items.size();i++)
 		safe_delete(tmp_reward_items[i]);
+	tmp_reward_items.clear();
+	
 	for(int32 i=0;i<selectable_reward_items.size();i++)
 		safe_delete(selectable_reward_items[i]);
+	selectable_reward_items.clear();
+	
 	quest_step_map.clear();
 	task_group_order.clear();
 	task_group.clear();