From 60613ef05cd3ca9086c5e5c9ac292f5630f3f533 Mon Sep 17 00:00:00 2001 From: Jo-Philipp Wich Date: Fri, 10 Jul 2009 17:38:01 +0000 Subject: [PATCH] libs/core: trigger garbage collection in coxpcall() if 80% of the allocated memory pool are filled --- libs/core/luasrc/util.lua | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/libs/core/luasrc/util.lua b/libs/core/luasrc/util.lua index adeb99fb1..e86d5ec23 100644 --- a/libs/core/luasrc/util.lua +++ b/libs/core/luasrc/util.lua @@ -37,6 +37,7 @@ local rawget, rawset, unpack = rawget, rawset, unpack local tostring, type, assert = tostring, type, assert local ipairs, pairs, loadstring = ipairs, pairs, loadstring local require, pcall, xpcall = require, pcall, xpcall +local collectgarbage, get_memory_limit = collectgarbage, get_memory_limit --- LuCI utility functions. module "luci.util" @@ -784,5 +785,11 @@ end -- Resume execution of protected function call function performResume(err, co, ...) + if get_memory_limit and get_memory_limit() > 0 and + collectgarbage("count") > (get_memory_limit() * 0.8) + then + collectgarbage("collect") + end + return handleReturnValue(err, co, coroutine.resume(co, ...)) end -- 2.25.1