From db7183a5737646773a2f240f01b5891c1e4a4fe8 Mon Sep 17 00:00:00 2001 From: Grimdhex <176165533+Grimdhex@users.noreply.github.com> Date: Wed, 21 Aug 2024 13:13:20 +0200 Subject: [PATCH] chore(Debug/Scripting): improve debug errors during the unloading scripts (#19643) * chore(Debug/Scripting): improve debug errors during script unloading * add the script name to increase debug informations and ensure to derefence script pointers --- src/server/game/Scripting/ScriptMgr.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 9ec3ffeea..d97e568bf 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -30,9 +30,24 @@ namespace template inline void SCR_CLEAR() { - for (auto const& [scriptID, script] : ScriptRegistry::ScriptPointerList) + for (auto& [scriptID, script] : ScriptRegistry::ScriptPointerList) { - delete script; + try + { + if(script) + { + delete script; + script = nullptr; + } + } + catch (const std::exception& e) + { + LOG_ERROR("scripts.unloading", "Failed to unload script {} with ID: {}. Error: {}", script->GetName(), scriptID, e.what()); + } + catch (...) + { + LOG_ERROR("scripts.unloading", "Failed to unload script {} with ID: {}. Unknown error occurred.", script->GetName(), scriptID); + } } ScriptRegistry::ScriptPointerList.clear();