1. snax hotfix recursively patch func
2. load hotfix source with _ENV instead of empty table
@@ -68,9 +68,9 @@ 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 function _patch(global, f)
local i = 1
while true do
local name, value = debug.getupvalue(f, i)
@@ -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
