diff options
author | Naios <naios-dev@live.de> | 2016-04-12 16:52:29 +0200 |
---|---|---|
committer | Naios <naios-dev@live.de> | 2016-04-12 16:54:11 +0200 |
commit | a3936c143da76fb1eb785c6277e5aa0470b1cf33 (patch) | |
tree | 433dfc76b5f0247a4567f37339ff7dab5a597181 /src/server/game/Scripting/ScriptMgr.cpp | |
parent | 89a3fc21677f4c253e9ba09bab29e98a77bc875e (diff) |
Core/Scripting: Fix an assertion which was triggered at lazy unloading
* Also fixes 2 warnings
(cherry picked from commit e82a934387b03a0a70e4d402eb5729c24728a698)
Diffstat (limited to 'src/server/game/Scripting/ScriptMgr.cpp')
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 0e8bc517ca8..322facbce25 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -166,7 +166,8 @@ class ScriptRegistryCompositum public: void SetScriptNameInContext(std::string const& scriptname, std::string const& context) { - ASSERT(_scriptnames_to_context.find(scriptname) == _scriptnames_to_context.end()); + ASSERT(_scriptnames_to_context.find(scriptname) == _scriptnames_to_context.end(), + "Scriptname was assigned to this context already!"); _scriptnames_to_context.insert(std::make_pair(scriptname, context)); } @@ -180,15 +181,18 @@ public: void ReleaseContext(std::string const& context) final override { + for (auto const registry : _registries) + registry->ReleaseContext(context); + + // Clear the script names in context after calling the release hooks + // since it's possible that new references to a shared library + // are acquired when releasing. for (auto itr = _scriptnames_to_context.begin(); itr != _scriptnames_to_context.end();) if (itr->second == context) itr = _scriptnames_to_context.erase(itr); else ++itr; - - for (auto const registry : _registries) - registry->ReleaseContext(context); } void SwapContext(bool initialize) final override @@ -604,7 +608,7 @@ public: swapped = true; } - void BeforeSwapContext(bool initialize) override + void BeforeSwapContext(bool /*initialize*/) override { swapped = false; } @@ -634,7 +638,7 @@ public: swapped = true; } - void BeforeSwapContext(bool initialize) override + void BeforeSwapContext(bool /*initialize*/) override { if (swapped) { |