From: nobu.nakada@... Date: 2001-10-01T22:20:36+09:00 Subject: [ruby-dev:14835] Re: custom marshal なかだです。 At Mon, 1 Oct 2001 18:44:46 +0900, Tanaka Akira wrote: > % ruby -e 'class C < Hash; end; p Marshal.load(Marshal.dump(C.new))' > -e:1:in `load': dump format error (user class) (ArgumentError) > from -e:1 > > これは逆な気がしますね。 > > v.class が c の子孫であることを検査してますが、 > c が v.class の子孫であることを検査したかったんじゃないのかなぁ。  うーん、たしかにそんな気もしますね。 Index: marshal.c =================================================================== RCS file: /cvs/ruby/src/ruby/marshal.c,v retrieving revision 1.44 diff -u -2 -p -r1.44 marshal.c --- marshal.c 2001/08/29 06:28:44 1.44 +++ marshal.c 2001/10/01 13:02:47 @@ -799,5 +799,5 @@ r_object(arg) v = r_object(arg); if (rb_special_const_p(v) || - !RTEST(rb_funcall(c, rb_intern("==="), 1, v))) { + !RTEST(rb_funcall(c, '<', 1, RBASIC(v)->klass))) { rb_raise(rb_eArgError, "dump format error (user class)"); } -- --- 僕の前にBugはない。 --- 僕の後ろにBugはできる。 中田 伸悦