From: Thierry FOURNIER Date: Sun, 27 Sep 2015 20:17:19 +0000 (+0200) Subject: MEDIUM: lua: change the GC policy X-Git-Tag: v1.6-dev6~37 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6ab4d8ec0ee59f743c7099c2a984b620d350b4c9;p=thirdparty%2Fhaproxy.git MEDIUM: lua: change the GC policy The GC is run each times that an Lua function exit with an error or with a success. --- diff --git a/src/hlua.c b/src/hlua.c index 0c8d1b128b..b893a47b65 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;