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/