Actions
Bug #13144
closedprettyprint doesn't detect cycles when wrapped inside Delegators
Description
The line count of the pretty print output for the following class grows factorially with the number of self-referencing SimpleDelegator instances created by the initializer. With an n of 8 the line count of the pretty print output is almost one million! This occurs because the cycle detection in lib/pp.rb doesn't detect the already printed object due to it being wrapped inside a Delegator instance. The same problem occurs with pretty printing cycles wrapped inside WeakRef because it is a subclass of Delegator.
class Foo
def initialize(n)
n.times { |i| instance_variable_set "@a#{i}", SimpleDelegator.new(self) }
end
end
Actions
Like0
Like0Like0