X-Git-Url: https://git.archive.openwrt.org/?p=project%2Fluci.git;a=blobdiff_plain;f=libs%2Fcore%2Fluasrc%2Futil.lua;h=e86d5ec239be78bfde25c56c07e75e8d867355fd;hp=adeb99fb11d25efa6932f6e46ad9fa3e950d2f6a;hb=60613ef05cd3ca9086c5e5c9ac292f5630f3f533;hpb=7dcb05fd1c4abb4281f6e8eb35616c3a545c961e 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