aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting/ScriptMgr.cpp
diff options
context:
space:
mode:
authorNaios <naios-dev@live.de>2016-04-12 16:52:29 +0200
committerNaios <naios-dev@live.de>2016-04-12 16:54:11 +0200
commita3936c143da76fb1eb785c6277e5aa0470b1cf33 (patch)
tree433dfc76b5f0247a4567f37339ff7dab5a597181 /src/server/game/Scripting/ScriptMgr.cpp
parent89a3fc21677f4c253e9ba09bab29e98a77bc875e (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.cpp16
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)
{