Bug #9609 ยป 0001-vm_eval.c-fix-misplaced-GC-guard.patch
| vm_eval.c | ||
|---|---|---|
|
{
|
||
|
VALUE new_args = rb_ary_new4(ci->argc, argv);
|
||
|
RB_GC_GUARD(new_args);
|
||
|
rb_ary_unshift(new_args, ID2SYM(ci->mid));
|
||
|
th->passed_block = ci->blockptr;
|
||
|
return rb_funcall2(ci->recv, idMethodMissing, ci->argc+1, RARRAY_PTR(new_args));
|
||
|
ret = rb_funcall2(ci->recv, idMethodMissing, ci->argc+1, RARRAY_PTR(new_args));
|
||
|
RB_GC_GUARD(new_args);
|
||
|
return ret;
|
||
|
}
|
||
|
case VM_METHOD_TYPE_OPTIMIZED:
|
||
|
switch (ci->me->def->body.optimize_type) {
|
||
| ... | ... | |
|
check_funcall_exec(struct rescue_funcall_args *args)
|
||
|
{
|
||
|
VALUE new_args = rb_ary_new4(args->argc, args->argv);
|
||
|
VALUE ret;
|
||
|
RB_GC_GUARD(new_args);
|
||
|
rb_ary_unshift(new_args, args->sym);
|
||
|
return rb_funcall2(args->recv, idMethodMissing,
|
||
|
ret = rb_funcall2(args->recv, idMethodMissing,
|
||
|
args->argc+1, RARRAY_PTR(new_args));
|
||
|
RB_GC_GUARD(new_args);
|
||
|
return ret;
|
||
|
}
|
||
|
static VALUE
|
||