diff --git a/zone/lua_iteminst.cpp b/zone/lua_iteminst.cpp index 7a72378b2..105e634b9 100644 --- a/zone/lua_iteminst.cpp +++ b/zone/lua_iteminst.cpp @@ -17,6 +17,13 @@ Lua_ItemInst::Lua_ItemInst(int item_id, int charges) { cloned_ = true; } +Lua_ItemInst::~Lua_ItemInst() { + if (cloned_) { + EQ::ItemInstance *ptr = GetLuaPtrData(); + delete ptr; + } +} + Lua_ItemInst& Lua_ItemInst::operator=(const Lua_ItemInst& o) { if(o.cloned_) { cloned_ = true; diff --git a/zone/lua_iteminst.h b/zone/lua_iteminst.h index ea8e98e37..bf5bd1853 100644 --- a/zone/lua_iteminst.h +++ b/zone/lua_iteminst.h @@ -4,6 +4,7 @@ #include "lua_ptr.h" +// Forward declaration class Lua_Item; namespace EQ @@ -28,7 +29,7 @@ public: Lua_ItemInst(EQ::ItemInstance *d, bool cloned) : Lua_Ptr(d), cloned_(cloned) { } Lua_ItemInst& operator=(const Lua_ItemInst& o); Lua_ItemInst(const Lua_ItemInst& o); - virtual ~Lua_ItemInst() { if(cloned_) { EQ::ItemInstance *ptr = GetLuaPtrData(); if(ptr) { delete ptr; } } } + virtual ~Lua_ItemInst(); operator EQ::ItemInstance*() { return reinterpret_cast(GetLuaPtrData());