diff options
-rw-r--r-- | vm.c | 2 | ||||
-rw-r--r-- | vm_insnhelper.c | 2 |
2 files changed, 2 insertions, 2 deletions
@@ -1628,7 +1628,7 @@ vm_svar_frame(const rb_execution_context_t *ec, rb_control_frame_t *cfp) struct vm_ifunc *ifunc = (struct vm_ifunc *)cfp->iseq; rb_control_frame_t *owner_cfp = ifunc->owner_cfp; if (cfp < owner_cfp) { - cfp = ifunc->owner_cfp; + cfp = owner_cfp; } else { return NULL; diff --git a/vm_insnhelper.c b/vm_insnhelper.c index 8ff837a8df..79247c277b 100644 --- a/vm_insnhelper.c +++ b/vm_insnhelper.c @@ -2829,7 +2829,7 @@ vm_call_iseq_setup(rb_execution_context_t *ec, rb_control_frame_t *cfp, struct r const rb_iseq_t *iseq = def_iseq_ptr(vm_cc_cme(cc)->def); const int param_size = ISEQ_BODY(iseq)->param.size; const int local_size = ISEQ_BODY(iseq)->local_table_size; - const int opt_pc = vm_callee_setup_arg(ec, calling, def_iseq_ptr(vm_cc_cme(cc)->def), cfp->sp - calling->argc, param_size, local_size); + const int opt_pc = vm_callee_setup_arg(ec, calling, iseq, cfp->sp - calling->argc, param_size, local_size); return vm_call_iseq_setup_2(ec, cfp, calling, opt_pc, param_size, local_size); } |