From f292ab69ef7ece46b7eb5bb2c7fc7ba1d16eb417 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Mon, 29 Aug 2005 06:30:09 +0000 Subject: [PATCH] handle cycles --- stepmania/Themes/default/Scripts/Serialize.lua | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/stepmania/Themes/default/Scripts/Serialize.lua b/stepmania/Themes/default/Scripts/Serialize.lua index df9c84d534..00d8a0ca6f 100644 --- a/stepmania/Themes/default/Scripts/Serialize.lua +++ b/stepmania/Themes/default/Scripts/Serialize.lua @@ -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