From 1589466076e9b579764f3c20babc75979a9ed54c Mon Sep 17 00:00:00 2001 From: fallenoak Date: Sat, 24 Jan 2026 22:48:09 -0600 Subject: [PATCH] feat(ui): add proper ScriptIx dtor --- src/ui/FrameScript_Object.cpp | 12 ++++++------ src/ui/FrameScript_Object.hpp | 3 ++- 2 files changed, 8 insertions(+), 7 deletions(-) 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);