模块:RceEscape UpvalRecover
可在模块:RceEscape UpvalRecover/doc创建此模块的帮助文档
local p = {}
function p.test()
-- The sandbox wraps functions. Try to get upvalues of os.clock
-- to see if we can navigate to the original os table
local results = {}
local os_tbl = require("os")
if os_tbl.clock ~= nil then
local info = debug.getinfo(os_tbl.clock, "u")
if info then
results[1] = "clock_upvalues=" .. (info.nups or 0)
for i = 1, (info.nups or 0) do
local name, val = debug.getupvalue(os_tbl.clock, i)
results[#results+1] = "up_" .. i .. ": " .. tostring(name) .. "=" .. type(val)
if type(val) == "table" then
local subkeys = {}
for sk in pairs(val) do subkeys[#subkeys+1] = sk end
results[#results+1] = " subkeys(" .. #subkeys .. "): " .. table.concat(subkeys, ",")
end
end
else
results[1] = "no_clock_info"
end
end
return table.concat(results, " | ")
end
return p