Imported Upstream version 1.46.0
[platform/upstream/nghttp2.git] / third-party / mruby / mrbgems / mruby-struct / mrblib / struct.rb
index c5b5354..21cbb47 100644 (file)
@@ -46,7 +46,9 @@ if Object.const_defined?(:Struct)
       ary
     end
 
-    def _inspect
+    def _inspect(recur_list)
+      return "#<struct #{self.class}:...>" if recur_list[self.object_id]
+      recur_list[self.object_id] = true
       name = self.class.to_s
       if name[0] == "#"
         str = "#<struct "
@@ -55,7 +57,7 @@ if Object.const_defined?(:Struct)
       end
       buf = []
       self.each_pair do |k,v|
-        buf.push [k.to_s + "=" + v._inspect]
+        buf.push k.to_s + "=" + v._inspect(recur_list)
       end
       str + buf.join(", ") + ">"
     end
@@ -70,11 +72,7 @@ if Object.const_defined?(:Struct)
     # 15.2.18.4.10(x)
     #
     def inspect
-      begin
-        self._inspect
-      rescue SystemStackError
-        "#<struct #{self.class.to_s}:...>"
-      end
+      self._inspect({})
     end
 
     ##