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 0c8d1b1..b893a47 100644
--- a/src/hlua.c
+++ b/src/hlua.c
@@ -923,9 +923,8 @@
 	 * 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 @@
 		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;