From: matz@... (Yukihiro Matsumoto) Date: 2002-03-04T08:03:33+09:00 Subject: Re: proc arg to Marshal.dump in 1.6.7 Hi, In message "proc arg to Marshal.dump in 1.6.7" on 02/03/04, Joel VanderWerf writes: |The proc arg to dump is broken in 1.6.7: | | str = Marshal.dump [1,2,3] | # ==> "\004\006[\010i\006i\ai\010" | Marshal.load str, proc {|x|} | # ==> NameError: undefined method `yield' for # | from (irb):2:in `load' | from (irb):2 | |I fixed this by replacing the "yield" in marshal.c with "call". I guess |Proc#yield was imported from future? Yes. It's mistakenly backported from 1.7; here's the patch. Index: marshal.c =================================================================== RCS file: /home/akira/cvs/ruby-src/cvs/ruby/marshal.c,v retrieving revision 1.26.2.12 diff -u -r1.26.2.12 marshal.c --- ruby_1_6/marshal.c 28 Feb 2002 06:52:47 -0000 1.26.2.12 +++ ruby_1_6/marshal.c 3 Mar 2002 06:02:23 -0000 @@ -1047,7 +1047,7 @@ break; } if (arg->proc) { - rb_funcall(arg->proc, rb_intern("yield"), 1, v); + rb_funcall(arg->proc, rb_intern("call"), 1, v); } return v; }