From 92b8e406e302e60cd32f97a2d28e1c57c0a71357 Mon Sep 17 00:00:00 2001 From: Emagi Date: Sun, 15 Dec 2024 08:07:38 -0500 Subject: [PATCH] Set LUA User data stale and removing pointer references before actual mem deletion of any spell data --- source/WorldServer/LuaInterface.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/source/WorldServer/LuaInterface.cpp b/source/WorldServer/LuaInterface.cpp index 6a6ce70..5dd3175 100644 --- a/source/WorldServer/LuaInterface.cpp +++ b/source/WorldServer/LuaInterface.cpp @@ -1619,9 +1619,13 @@ void LuaInterface::DeletePendingSpells(bool all) { tmp_deletes.push_back(itr->first); } LuaSpell* spell = 0; + for (del_itr = tmp_deletes.begin(); del_itr != tmp_deletes.end(); del_itr++) { spell = *del_itr; + SetLuaUserDataStale(spell); + RemoveCurrentSpell(spell->state, spell, false); + if(!all) { // rely on targets the spell->caster could be corrupt bool spellDeleted = false; @@ -1654,9 +1658,6 @@ void LuaInterface::DeletePendingSpells(bool all) { RemoveCustomSpell(spell->spell->GetSpellID()); safe_delete(spell->spell); } - - SetLuaUserDataStale(spell); - RemoveCurrentSpell(spell->state, spell, false); } } MSpellDelete.unlock();