diff --git a/src/server/game/LuaEngine/ElunaMgr.cpp b/src/server/game/LuaEngine/ElunaMgr.cpp index 73dab27cfe..4596726548 100644 --- a/src/server/game/LuaEngine/ElunaMgr.cpp +++ b/src/server/game/LuaEngine/ElunaMgr.cpp @@ -7,6 +7,8 @@ #include "ElunaMgr.h" #include "LuaEngine.h" +bool ElunaMgr::_shuttingDown = false; + ElunaMgr::ElunaMgr() { } @@ -19,6 +21,7 @@ ElunaMgr* ElunaMgr::instance() ElunaMgr::~ElunaMgr() { + _shuttingDown = true; } void ElunaMgr::Create(Map* map, ElunaInfo const& info) @@ -57,7 +60,7 @@ void ElunaMgr::Destroy(ElunaInfo const& info) ElunaInfo::~ElunaInfo() { - if (IsValid() && sElunaMgr) + if (IsValid() && !ElunaMgr::IsShuttingDown()) sElunaMgr->Destroy(key); } diff --git a/src/server/game/LuaEngine/ElunaMgr.h b/src/server/game/LuaEngine/ElunaMgr.h index e1a6210531..8c44b2e954 100644 --- a/src/server/game/LuaEngine/ElunaMgr.h +++ b/src/server/game/LuaEngine/ElunaMgr.h @@ -92,6 +92,7 @@ private: public: static ElunaMgr* instance(); + static bool IsShuttingDown() { return _shuttingDown; } void Create(Map* map, ElunaInfo const& info); @@ -103,6 +104,7 @@ public: private: std::unordered_map> _elunaMap; + static bool _shuttingDown; }; #define sElunaMgr ElunaMgr::instance()