From ceddb498682549c2904f9ffbeffb8ae7102e2d5f Mon Sep 17 00:00:00 2001 From: nobu Date: Tue, 6 Oct 2015 06:38:08 +0000 Subject: vm_args.c: wrap symbol ifunc * vm_args.c (args_setup_block_parameter): wrap a symbol in ifunc by a proc as a block parameter. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52056 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- vm_args.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'vm_args.c') diff --git a/vm_args.c b/vm_args.c index 18911b4a5d..b031c0dc64 100644 --- a/vm_args.c +++ b/vm_args.c @@ -478,6 +478,10 @@ args_setup_block_parameter(rb_thread_t *th, struct rb_calling_info *calling, VAL GetProcPtr(blockval, proc); calling->blockptr = &proc->block; } + else if (RUBY_VM_IFUNC_P(blockptr->proc)) { + const ID mid = (ID)((struct vm_ifunc *)blockptr->proc)->data; + blockval = rb_sym_to_proc(ID2SYM(mid)); + } else { blockval = blockptr->proc; } -- cgit v1.2.3