1. snax hotfix recursively patch func

2. load hotfix source with _ENV instead of empty table
This commit is contained in:
hqwrong
2017-02-08 17:50:31 +08:00
parent 6fd1072fde
commit f25e396181

View File

@@ -68,10 +68,10 @@ local function find_func(funcs, group , name)
end
local dummy_env = {}
for k,v in pairs(_ENV) do dummy_env[k] = v end
local function patch_func(funcs, global, group, name, f)
local desc = assert(find_func(funcs, group, name) , string.format("Patch mismatch %s.%s", group, name))
local i = 1
local function _patch(global, f)
local i = 1
while true do
local name, value = debug.getupvalue(f, i)
if name == nil then
@@ -81,9 +81,18 @@ local function patch_func(funcs, global, group, name, f)
if old_uv then
debug.upvaluejoin(f, i, old_uv.func, old_uv.index)
end
else
if type(value) == "function" then
_patch(global, value)
end
end
i = i + 1
end
end
local function patch_func(funcs, global, group, name, f)
local desc = assert(find_func(funcs, group, name) , string.format("Patch mismatch %s.%s", group, name))
_patch(global, f)
desc[4] = f
end