lua-utils: fix in object destructor
authorJanos Kovacs <jankovac503@gmail.com>
Thu, 20 Dec 2012 20:28:15 +0000 (22:28 +0200)
committerJanos Kovacs <jankovac503@gmail.com>
Thu, 20 Dec 2012 20:28:15 +0000 (22:28 +0200)
src/core/lua-utils/object.c

index b80630e..92fa1d2 100644 (file)
@@ -179,9 +179,16 @@ void mrp_lua_destroy_object(lua_State *L, const char *name, void *data)
     userdata_t *userdata = (userdata_t *)(data - offset);
     mrp_lua_classdef_t *def;
 
-    if (data && userdata == userdata->self && userdata->dead) {
+    if (data && userdata == userdata->self && !userdata->dead) {
+        userdata->dead = true;
         def = userdata->def;
 
+        lua_rawgeti(L, LUA_REGISTRYINDEX, userdata->luatbl);
+        lua_pushstring(L, "userdata");
+        lua_pushnil(L);
+        lua_rawset(L, -3);
+        lua_pop(L, -1);
+
         luaL_unref(L, LUA_REGISTRYINDEX, userdata->luatbl);
 
         mrp_lua_get_class_table(L, def);