handle cycles

This commit is contained in:
Glenn Maynard
2005-08-29 06:30:09 +00:00
parent de251f6834
commit f292ab69ef
@@ -62,15 +62,20 @@ function Serialize(t)
end
-- Recursively deep-copy a table.
function DeepCopy(t)
function DeepCopy(t, already_copied)
already_copied = already_copied or { }
if type(t) ~= "table" then
return t
end
local ret = {}
for a,b in pairs(t) do
ret[a] = DeepCopy(b)
if already_copied[t] then
return already_copied[t]
end
already_copied[t] = { }
local ret = already_copied[t]
table.foreach(t, function(a,b) ret[a] = DeepCopy(b, already_copied) end)
return ret
end