Project

General

Profile

Bug #1534

Inconsistency Between Struct#to_s and Struct#inspect

Added by ujihisa (Tatsuhiro Ujihisa) over 10 years ago. Updated over 8 years ago.

Status:
Closed
Priority:
Normal
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

History

#1

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

=begin
Applied in changeset r23606.
=end

Also available in: Atom PDF