diff --git a/zone/QuestParserCollection.cpp b/zone/QuestParserCollection.cpp index 06e191b49..cab48a768 100644 --- a/zone/QuestParserCollection.cpp +++ b/zone/QuestParserCollection.cpp @@ -46,6 +46,12 @@ void QuestParserCollection::RegisterQuestInterface(QuestInterface *qi, std::stri _load_precedence.push_back(qi); } +void QuestParserCollection::ClearInterfaces() { + _interfaces.clear(); + _extensions.clear(); + _load_precedence.clear(); +} + void QuestParserCollection::AddVar(std::string name, std::string val) { std::list::iterator iter = _load_precedence.begin(); while(iter != _load_precedence.end()) { diff --git a/zone/QuestParserCollection.h b/zone/QuestParserCollection.h index e8a930b64..f9da8c79c 100644 --- a/zone/QuestParserCollection.h +++ b/zone/QuestParserCollection.h @@ -39,7 +39,8 @@ public: ~QuestParserCollection(); void RegisterQuestInterface(QuestInterface *qi, std::string ext); - + void UnRegisterQuestInterface(QuestInterface *qi, std::string ext); + void ClearInterfaces(); void AddVar(std::string name, std::string val); void Init(); void ReloadQuests(bool reset_timers = true); diff --git a/zone/net.cpp b/zone/net.cpp index 98ef19362..1d49d17ed 100644 --- a/zone/net.cpp +++ b/zone/net.cpp @@ -476,6 +476,8 @@ int main(int argc, char** argv) { entity_list.Clear(); + parse->ClearInterfaces(); + #ifdef EMBPERL safe_delete(perl_parser); #endif @@ -496,7 +498,7 @@ int main(int argc, char** argv) { dbasync->StopThread(); safe_delete(taskmanager); command_deinit(); - + safe_delete(parse); CheckEQEMuErrorAndPause(); _log(ZONE__INIT, "Proper zone shutdown complete."); return 0;