Hi,

In message "proc arg to Marshal.dump in 1.6.7"
    on 02/03/04, Joel VanderWerf <vjoel / PATH.Berkeley.EDU> 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 #<Proc:0x40214384>
|                     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;
 }