mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-18 16:38:42 +01:00
Core/Scripting: Fix an assertion which was triggered at lazy unloading
* Also fixes 2 warnings
This commit is contained in:
@@ -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)
|
||||
{
|
||||
|
||||
@@ -117,7 +117,7 @@ public:
|
||||
|
||||
if (!success)
|
||||
{
|
||||
TC_LOG_ERROR("scripts.hotswap", "Failed to close the shared library \"%s\".",
|
||||
TC_LOG_ERROR("scripts.hotswap", "Failed to unload (syscall) the shared library \"%s\".",
|
||||
_path.generic_string().c_str());
|
||||
|
||||
return;
|
||||
@@ -893,8 +893,10 @@ private:
|
||||
if (!ref->second.unique())
|
||||
{
|
||||
TC_LOG_INFO("scripts.hotswap",
|
||||
"Script module %s is still used by %lu scripts. "
|
||||
"Will lazy unload the module once all scripts stopped using it.",
|
||||
"Script module %s is still used by %lu spell, aura or instance scripts. "
|
||||
"Will lazy unload the module once all scripts stopped using it, "
|
||||
"to use the latest version of an edited script unbind yourself from "
|
||||
"the instance or re-cast the spell.",
|
||||
ref->second->GetScriptModule(), ref->second.use_count() - 1);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user