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

ruby-changes:7551

From: mame <ko1@a...>
Date: Wed, 3 Sep 2008 00:24:06 +0900 (JST)
Subject: [ruby-changes:7551] Ruby:r19072 (trunk): * vm_insnhelper.c (vm_method_missing): copy arguments to allocated

mame	2008-09-03 00:23:49 +0900 (Wed, 03 Sep 2008)

  New Revision: 19072

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=19072

  Log:
    * vm_insnhelper.c (vm_method_missing): copy arguments to allocated
      memory from machine stack.  [ruby-dev:36064]

  Modified files:
    trunk/ChangeLog
    trunk/vm_insnhelper.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 19071)
+++ ChangeLog	(revision 19072)
@@ -1,3 +1,8 @@
+Wed Sep  3 00:23:25 2008  Yusuke Endoh  <mame@t...>
+
+	* vm_insnhelper.c (vm_method_missing): copy arguments to allocated
+	  memory from machine stack.  [ruby-dev:36064]
+
 Tue Sep  2 22:20:26 2008  Tanaka Akira  <akr@f...>
 
 	* transcode_data.h (base_element): removed.
Index: vm_insnhelper.c
===================================================================
--- vm_insnhelper.c	(revision 19071)
+++ vm_insnhelper.c	(revision 19072)
@@ -410,13 +410,14 @@
 		  int num, rb_block_t *blockptr, int opt)
 {
     rb_control_frame_t * const reg_cfp = th->cfp;
-    VALUE *argv = STACK_ADDR_FROM_TOP(num + 1);
+    VALUE *argv = ALLOCA_N(VALUE, num + 1);
+    MEMCPY(argv, STACK_ADDR_FROM_TOP(num + 1), VALUE, num + 1);
     VALUE val;
     argv[0] = ID2SYM(id);
     th->method_missing_reason = opt;
     th->passed_block = blockptr;
+    POPN(num + 1);
     val = rb_funcall2(recv, idMethodMissing, num + 1, argv);
-    POPN(num + 1);
     return val;
 }
 

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

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