diff --git a/src/ui/FrameScript_Object.cpp b/src/ui/FrameScript_Object.cpp index d63daae..15b19a6 100644 --- a/src/ui/FrameScript_Object.cpp +++ b/src/ui/FrameScript_Object.cpp @@ -5,6 +5,12 @@ int32_t FrameScript_Object::s_objectTypes = 0; +FrameScript_Object::ScriptIx::~ScriptIx() { + if (this->luaRef) { + luaL_unref(FrameScript_GetContext(), LUA_REGISTRYINDEX, this->luaRef); + } +} + int32_t FrameScript_Object::CreateScriptMetaTable(lua_State* L, void (*a2)(lua_State* L)) { lua_createtable(L, 0, 0); lua_pushstring(L, "__index"); @@ -24,12 +30,6 @@ void FrameScript_Object::FillScriptMethodTable(lua_State *L, FrameScript_Method } } -FrameScript_Object::~FrameScript_Object() { - if (this->m_onEvent.luaRef) { - luaL_unref(FrameScript_GetContext(), LUA_REGISTRYINDEX, this->m_onEvent.luaRef); - } -} - const char* FrameScript_Object::GetDisplayName() { const char* name = this->GetName(); return name ? name : ""; diff --git a/src/ui/FrameScript_Object.hpp b/src/ui/FrameScript_Object.hpp index c8edad2..e80049e 100644 --- a/src/ui/FrameScript_Object.hpp +++ b/src/ui/FrameScript_Object.hpp @@ -14,6 +14,7 @@ class FrameScript_Object { struct ScriptIx { int32_t luaRef = 0; const char* unk = nullptr; + ~ScriptIx(); }; class ScriptFunction { @@ -34,7 +35,7 @@ class FrameScript_Object { ScriptIx m_onEvent; // Virtual member functions - virtual ~FrameScript_Object(); + virtual ~FrameScript_Object() = default; virtual char* GetName() = 0; virtual int32_t GetScriptMetaTable() = 0; virtual ScriptIx* GetScriptByName(const char* name, ScriptData& data);