Commit 578a19ed authored by Carla Goncalves Ourofino's avatar Carla Goncalves Ourofino
Browse files

Corrige loop infinito quando duas propriedades seguidas não deveriam passar na...

Corrige loop infinito quando duas propriedades seguidas não deveriam passar na validação da metatable.

O loop infinito era intermitente pois dependia da ordem da iteração para ocorrer.

[SOMA-3827][SOMA-4177]
parent d89c0c1f
......@@ -52,17 +52,14 @@ function util.metatable_pairs(tbl)
else
local mt = getmetatable(tbl)
if mt and mt.__index and type(mt.__index) == "table" then
k, v = next(mt, k)
-- Excludes meta-methods from iteration
if k == nil or k:sub(1, 2) == "__" then
while true do
k, v = next(mt, k)
end
if v ~= nil then
if rawget(tbl, k) then
k, v = next(mt, k)
if not v then
break
end
if v ~= nil then
v = tbl[k]
local is_metamethod = (k and k:sub(1, 2) == "__")
local is_from_original = rawget(tbl, k)
if not is_metamethod and not is_from_original then
return k, v
end
end
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment