diff options
Diffstat (limited to 'vm_args.c')
-rw-r--r-- | vm_args.c | 5 |
1 files changed, 4 insertions, 1 deletions
@@ -1204,7 +1204,10 @@ vm_caller_setup_arg_block(const rb_execution_context_t *ec, rb_control_frame_t * return VM_BLOCK_HANDLER_NONE; } else if (block_code == rb_block_param_proxy) { - return VM_CF_BLOCK_HANDLER(reg_cfp); + VM_ASSERT(!VM_CFP_IN_HEAP_P(GET_EC(), reg_cfp)); + VALUE handler = VM_CF_BLOCK_HANDLER(reg_cfp); + reg_cfp->block_code = (const void *) handler; + return handler; } else if (SYMBOL_P(block_code) && rb_method_basic_definition_p(rb_cSymbol, idTo_proc)) { const rb_cref_t *cref = vm_env_cref(reg_cfp->ep); |