From 1fe610b5885217a9bac6d9a5ef74c79589c5fbca Mon Sep 17 00:00:00 2001 From: naruse Date: Mon, 26 Oct 2009 20:58:25 +0000 Subject: [PATCH] * vm.c (invoke_block_from_c): return Qnil when its iseq is SPECIAL CONST. [ruby-core:26335] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@25494 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 5 +++++ vm.c | 4 +++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 31d7bb3ef9..4a3febde58 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Tue Oct 27 05:56:39 2009 NARUSE, Yui + + * vm.c (invoke_block_from_c): return Qnil when its iseq is + SPECIAL CONST. [ruby-core:26335] + Tue Oct 27 05:11:49 2009 NARUSE, Yui * vm_exec.c (DECL_SC_REG): check defined(__asm__) before use it. diff --git a/vm.c b/vm.c index 066fe6f0fe..91a5c6d5ab 100644 --- a/vm.c +++ b/vm.c @@ -523,7 +523,9 @@ invoke_block_from_c(rb_thread_t *th, const rb_block_t *block, VALUE self, int argc, const VALUE *argv, const rb_block_t *blockptr, const NODE *cref) { - if (BUILTIN_TYPE(block->iseq) != T_NODE) { + if (SPECIAL_CONST_P(block->iseq)) + return Qnil; + else if (BUILTIN_TYPE(block->iseq) != T_NODE) { const rb_iseq_t *iseq = block->iseq; const rb_control_frame_t *cfp; int i, opt_pc, arg_size = iseq->arg_size;