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

ruby-changes:9211

From: nobu <ko1@a...>
Date: Mon, 15 Dec 2008 16:27:26 +0900 (JST)
Subject: [ruby-changes:9211] Ruby:r20748 (trunk): * vm_insnhelper.c (vm_callee_setup_arg_complex): uses cfp from

nobu	2008-12-15 16:26:48 +0900 (Mon, 15 Dec 2008)

  New Revision: 20748

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

  Log:
    * vm_insnhelper.c (vm_callee_setup_arg_complex): uses cfp from
      blockptr instead of the current cfp.  [ruby-core:20544]

  Modified files:
    trunk/ChangeLog
    trunk/bootstraptest/test_block.rb
    trunk/vm_insnhelper.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 20747)
+++ ChangeLog	(revision 20748)
@@ -1,3 +1,8 @@
+Mon Dec 15 16:26:46 2008  Nobuyoshi Nakada  <nobu@r...>
+
+	* vm_insnhelper.c (vm_callee_setup_arg_complex): uses cfp from
+	  blockptr instead of the current cfp.  [ruby-core:20544]
+
 Mon Dec 15 14:56:59 2008  Yuki Sonoda (Yugui)  <yugui@y...>
 
 	* test/ruby/test_metaclass.rb: new test case for metaclass hierarchy.
Index: bootstraptest/test_block.rb
===================================================================
--- bootstraptest/test_block.rb	(revision 20747)
+++ bootstraptest/test_block.rb	(revision 20748)
@@ -487,6 +487,24 @@
 }, '[ruby-talk:266422]'
 
 assert_equal 'ok', %q{
+  class C
+    define_method(:xyz) do |o, k, &block|
+      block.call(o, k)
+    end
+  end
+  C.new.xyz("o","k") {|o, k| o+k}
+}, '[ruby-core:20544]'
+
+assert_equal 'ok', %q{
+  class C
+    define_method(:xyz) do |*args, &block|
+      block.call(*args)
+    end
+  end
+  C.new.xyz("o","k") {|*args| args.join("")}
+}, '[ruby-core:20544]'
+
+assert_equal 'ok', %q{
   STDERR.reopen(STDOUT)
   class C
     define_method(:foo) do |&block|
Index: vm_insnhelper.c
===================================================================
--- vm_insnhelper.c	(revision 20747)
+++ vm_insnhelper.c	(revision 20748)
@@ -186,7 +186,8 @@
 	    if (blockptr->proc == 0) {
 		rb_proc_t *proc;
 
-		blockval = vm_make_proc(th, th->cfp, blockptr, rb_cProc);
+		blockval = vm_make_proc(th, RUBY_VM_GET_CFP_FROM_BLOCK_PTR(blockptr),
+					blockptr, rb_cProc);
 
 		GetProcPtr(blockval, proc);
 		*block = &proc->block;

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

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