diff options
| author | takahashim <[email protected]> | 2015-01-12 19:52:43 +0900 |
|---|---|---|
| committer | takahashim <[email protected]> | 2015-01-12 20:08:53 +0900 |
| commit | 9dff0aedb12fa571f9c7d64e3e049dff06bf77cd (patch) | |
| tree | d3d85d153405d64775bbc8469a6be9b1f9da9e91 /mrbgems/mruby-struct/mrblib/struct.rb | |
| parent | 53da1fb5a19e3f94760c913e5706ef444b0ef376 (diff) | |
| download | mruby-9dff0aedb12fa571f9c7d64e3e049dff06bf77cd.tar.gz mruby-9dff0aedb12fa571f9c7d64e3e049dff06bf77cd.zip | |
fix Segmentation fault on Struct#inspect due to recursive Struct object
Diffstat (limited to 'mrbgems/mruby-struct/mrblib/struct.rb')
| -rw-r--r-- | mrbgems/mruby-struct/mrblib/struct.rb | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/mrbgems/mruby-struct/mrblib/struct.rb b/mrbgems/mruby-struct/mrblib/struct.rb index 5d0ede90f..57f100acd 100644 --- a/mrbgems/mruby-struct/mrblib/struct.rb +++ b/mrbgems/mruby-struct/mrblib/struct.rb @@ -45,6 +45,37 @@ if Object.const_defined?(:Struct) } ary end + + def _inspect + str = "#<struct #{self.class.to_s} " + buf = [] + self.each_pair do |k,v| + buf.push [k.to_s + "=" + v._inspect] + end + str + buf.join(", ") + ">" + end + + ## + # call-seq: + # struct.to_s -> string + # struct.inspect -> string + # + # Describe the contents of this struct in a string. + # + # 15.2.18.4.10(x) + # + def inspect + begin + self._inspect + rescue SystemStackError + "#<struct #{self.class.to_s}:...>" + end + end + + ## + # 15.2.18.4.11(x) + # + alias to_s inspect end end |
