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
|