[ruby-dev:24356] Re: `dump': uninitialized struct (TypeError)

From: nobu@...
Date: 2004-09-27 04:16:57 UTC
List: ruby-dev #24356
なかだです。

At Mon, 27 Sep 2004 11:46:18 +0900,
nobu@ruby-lang.org wrote in [ruby-dev:24352]:
> > 次のように struct を dump できません。
> > 
> > % ./ruby -ve 'Marshal.dump(Struct.new("A", :a).new)'
> > ruby 1.9.0 (2004-09-24) [i686-linux]
> > -e:1:in `dump': uninitialized struct (TypeError)
> >         from -e:1
> 
> __member__から__members__に変更になったのにmarshal.cが追従して
> ないんですが、むしろstruct_members()をexternにしたほうがいいん
> じゃないでしょうか。

一ヶ所見落としてました。


Index: marshal.c
===================================================================
RCS file: /cvs/ruby/src/ruby/marshal.c,v
retrieving revision 1.115
diff -u -2 -p -r1.115 marshal.c
--- marshal.c	17 Aug 2004 09:02:40 -0000	1.115
+++ marshal.c	27 Sep 2004 04:12:39 -0000
@@ -1197,5 +1194,5 @@ r_object0(arg, proc, ivp, extmod)
 
 	    klass = path2class(r_unique(arg));
-	    mem = rb_struct_iv_get(klass, "__member__");
+	    mem = rb_struct_s_members(klass);
 	    if (mem == Qnil) {
 		rb_raise(rb_eTypeError, "uninitialized struct");


-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

In This Thread