From 54b48da267b0a75e0cc6366a9409be12fdf4dde5 Mon Sep 17 00:00:00 2001 From: shyouhei Date: Tue, 26 May 2009 12:00:44 +0000 Subject: merge revision(s) 22329: * lib/ostruct.rb (OpenStruct#inspect): fixed the recursion check. Patch by Kornelius Kalnbach. [ruby-core:20992]. * test/ostruct/test_ostruct.rb: test for inspect. Patch by Kornelius Kalnbach. [ruby-core:20992]. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8_7@23579 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- lib/ostruct.rb | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'lib') diff --git a/lib/ostruct.rb b/lib/ostruct.rb index 6af5bbdac0..ba7f061a22 100644 --- a/lib/ostruct.rb +++ b/lib/ostruct.rb @@ -111,25 +111,23 @@ class OpenStruct def inspect str = "#<#{self.class}" - Thread.current[InspectKey] ||= [] - if Thread.current[InspectKey].include?(self) then - str << " ..." - else + ids = (Thread.current[InspectKey] ||= []) + if ids.include?(object_id) + return str << ' ...>' + end + + ids << object_id + begin first = true for k,v in @table str << "," unless first first = false - - Thread.current[InspectKey] << v - begin - str << " #{k}=#{v.inspect}" - ensure - Thread.current[InspectKey].pop - end + str << " #{k}=#{v.inspect}" end + return str << '>' + ensure + ids.pop end - - str << ">" end alias :to_s :inspect -- cgit v1.2.3