Project

General

Profile

Actions

Bug #1534

closed

Inconsistency Between Struct#to_s and Struct#inspect

Added by ujihisa (Tatsuhiro Ujihisa) almost 15 years ago. Updated almost 13 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 1.9.2dev (2009-05-28 trunk 23601) [i386-darwin9.7.0]
Backport:
[ruby-dev:38554]

Description

=begin
http://redmine.ruby-lang.org/issues/show/1427
http://redmine.ruby-lang.org/issues/show/1533
の二つと同じ問題をStructで発見しました。
ruby 1.9では通常Struct#to_sとStruct#inspectは同じ文字列を返しますが、自己再帰する構造体に対しては異なる結果を返しています。

 # ruby 1.9.2dev (2009-05-28 trunk 23601) [i386-darwin9.7.0]
 t = Struct.new('A', :a).new(nil)
 t.a = t
 puts t.to_s
 #=> <struct Struct::A a=#<struct Struct::A a=#<struct Struct::A:...>>>
 puts t.inspect
 #=> <struct Struct::A a=#<struct Struct::A:...>>

添付のパッチでto_sの結果がinspectと同じになります。

なお、似たような実装をしているものがないかgrepしたところ, proc.c, time.c, ext/dl/cfunc.cが該当しました。が、これらは自己再帰的構造を持ち得ないため大丈夫と思います。
=end


Files

struct.c-to_s.patch (631 Bytes) struct.c-to_s.patch ujihisa (Tatsuhiro Ujihisa), 05/29/2009 07:33 AM
Actions

Also available in: Atom PDF

Like0
Like0