diff --git a/src/hlua.c b/src/hlua.c index 0c8d1b128..b893a47b6 100644 --- a/src/hlua.c +++ b/src/hlua.c @@ -923,9 +923,8 @@ void hlua_ctx_destroy(struct hlua *lua) * NOTE: maybe this action locks all the Lua threads untiml the en of * the garbage collection. */ - if (lua_status(lua->T) == LUA_OK) - lua_gc(lua->T, LUA_GCCOLLECT, 0); - else + lua_gc(lua->T, LUA_GCCOLLECT, 0); + if (lua_status(lua->T) != LUA_OK) lua_gc(gL.T, LUA_GCCOLLECT, 0); lua->T = NULL; @@ -1166,6 +1165,10 @@ timeout_reached: break; } + /* This GC permits to destroy some object when a Lua timeout strikes. */ + if (ret != HLUA_E_AGAIN) + lua_gc(lua->T, LUA_GCCOLLECT, 0); + switch (ret) { case HLUA_E_AGAIN: break;