textutils.serialize recursion check has an edge-case.
fatboychummy opened this issue ยท 3 comments
Minecraft Version
1.16.x
Version
1.98.0
Details
An edge case exists in textutils.serialize
currently where if you have two pointers to the same table inside a table, it will cause the recursive entries
error -- even though it isn't recursive.
For example,
local x = {x = {}}
x.y = x.x
textutils.serialize(x) -- error!
In the above, it isn't actually recursive, however it causes the "Cannot serialize table with recursive entries" error.
This behavior was definitely noticed in #664 because it adds an allow_repetitions
option that is set to nil
by default, SquidDev has explained that it probably shouldn't be true by default in #636 (comment) because it will cause the two tables to not be equal to each other in the unserialized version (this issue may also possibly be a duplicate of #636 , which the pull request mentions)
Yep. See #636 for why the current behaviour is what it is.