[前][次][番号順一覧][スレッド一覧]

ruby-changes:2076

From: ko1@a...
Date: 29 Sep 2007 17:17:59 +0900
Subject: [ruby-changes:2076] matz - Ruby:r13567 (trunk): * marshal.c (r_leave): move proc invocation from r_entry() to

matz	2007-09-29 17:17:48 +0900 (Sat, 29 Sep 2007)

  New Revision: 13567

  Modified files:
    trunk/ChangeLog
    trunk/marshal.c

  Log:
    * marshal.c (r_leave): move proc invocation from r_entry() to
      avoid potential crash.

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=13567&r2=13566
  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/marshal.c?r1=13567&r2=13566

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 13566)
+++ ChangeLog	(revision 13567)
@@ -1,3 +1,8 @@
+Sat Sep 29 17:14:44 2007  Yukihiro Matsumoto  <matz@r...>
+
+	* marshal.c (r_leave): move proc invocation from r_entry() to
+	  avoid potential crash.
+
 Sat Sep 29 12:28:08 2007  Tanaka Akira  <akr@f...>
 
 	* bootstraptest/runner.rb (assert_normal_exit): new method.
Index: marshal.c
===================================================================
--- marshal.c	(revision 13566)
+++ marshal.c	(revision 13567)
@@ -1016,9 +1016,6 @@
         if ((VALUE)real_obj != Qundef)
             OBJ_TAINT((VALUE)real_obj);
     }
-    if (arg->proc) {
-	v = rb_funcall(arg->proc, rb_intern("call"), 1, v);
-    }
     return v;
 }
 
@@ -1035,8 +1032,11 @@
             compat->loader(real_obj, v);
         }
         st_delete(arg->compat_tbl, &key, 0);
-        return real_obj;
+        v = real_obj;
     }
+    if (arg->proc) {
+	v = rb_funcall(arg->proc, rb_intern("call"), 1, v);
+    }
     return v;
 }
 

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml

[前][次][番号順一覧][スレッド一覧]