From 9ba76c8987fda91854cd8906f7baa11e311bcc8b Mon Sep 17 00:00:00 2001 From: Kayne Ruse Date: Wed, 26 Nov 2014 06:11:27 +1100 Subject: [PATCH] Added RegionPagerLua destructor --- common/map/region_pager_lua.cpp | 14 ++++++++++++++ common/map/region_pager_lua.hpp | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/common/map/region_pager_lua.cpp b/common/map/region_pager_lua.cpp index d8fb538..4eeea2b 100644 --- a/common/map/region_pager_lua.cpp +++ b/common/map/region_pager_lua.cpp @@ -23,6 +23,17 @@ #include +RegionPagerLua::~RegionPagerLua() { + //unload all regions + UnloadAll(); + //clear any stored functions + luaL_unref(lua, LUA_REGISTRYINDEX, loadRef); + luaL_unref(lua, LUA_REGISTRYINDEX, saveRef); + luaL_unref(lua, LUA_REGISTRYINDEX, createRef); + luaL_unref(lua, LUA_REGISTRYINDEX, unloadRef); +} + +//return the loaded region, or nullptr on failure Region* RegionPagerLua::LoadRegion(int x, int y) { //get the pager's function from the registry lua_rawgeti(lua, LUA_REGISTRYINDEX, loadRef); @@ -54,6 +65,7 @@ Region* RegionPagerLua::LoadRegion(int x, int y) { } } +//return the saved region, or nullptr on failure Region* RegionPagerLua::SaveRegion(int x, int y) { //get the pager's function from the registry lua_rawgeti(lua, LUA_REGISTRYINDEX, saveRef); @@ -88,6 +100,7 @@ Region* RegionPagerLua::SaveRegion(int x, int y) { } } +//return the created region, or nullptr on failure Region* RegionPagerLua::CreateRegion(int x, int y) { if (FindRegion(x, y)) { throw(std::logic_error("Cannot overwrite an existing region")); @@ -116,6 +129,7 @@ Region* RegionPagerLua::CreateRegion(int x, int y) { return ®ionList.front(); } +//no return void RegionPagerLua::UnloadRegion(int x, int y) { //get the pager's function from the registry lua_rawgeti(lua, LUA_REGISTRYINDEX, unloadRef); diff --git a/common/map/region_pager_lua.hpp b/common/map/region_pager_lua.hpp index d23260f..656074c 100644 --- a/common/map/region_pager_lua.hpp +++ b/common/map/region_pager_lua.hpp @@ -35,7 +35,7 @@ class RegionPagerLua : public RegionPagerBase { public: RegionPagerLua() = default; - ~RegionPagerLua() = default; + ~RegionPagerLua(); //region manipulation Region* LoadRegion(int x, int y) override;