vm_eval.c: pass thread too
* vm_eval.c (check_funcall_missing): pass same thread to call. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@51664 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
dc9c55d611
commit
1f557eaea1
@ -347,6 +347,7 @@ rb_call0(VALUE recv, ID mid, int argc, const VALUE *argv,
|
|||||||
}
|
}
|
||||||
|
|
||||||
struct rescue_funcall_args {
|
struct rescue_funcall_args {
|
||||||
|
rb_thread_t *th;
|
||||||
VALUE defined_class;
|
VALUE defined_class;
|
||||||
VALUE recv;
|
VALUE recv;
|
||||||
ID mid;
|
ID mid;
|
||||||
@ -358,7 +359,7 @@ struct rescue_funcall_args {
|
|||||||
static VALUE
|
static VALUE
|
||||||
check_funcall_exec(struct rescue_funcall_args *args)
|
check_funcall_exec(struct rescue_funcall_args *args)
|
||||||
{
|
{
|
||||||
return call_method_entry(GET_THREAD(), args->defined_class,
|
return call_method_entry(args->th, args->defined_class,
|
||||||
args->recv, idMethodMissing,
|
args->recv, idMethodMissing,
|
||||||
args->me, args->argc, args->argv);
|
args->me, args->argc, args->argv);
|
||||||
}
|
}
|
||||||
@ -397,6 +398,7 @@ check_funcall_missing(rb_thread_t *th, VALUE klass, VALUE recv, ID mid, int argc
|
|||||||
new_args[0] = ID2SYM(mid);
|
new_args[0] = ID2SYM(mid);
|
||||||
MEMCPY(new_args+1, argv, VALUE, argc);
|
MEMCPY(new_args+1, argv, VALUE, argc);
|
||||||
th->method_missing_reason = MISSING_NOENTRY;
|
th->method_missing_reason = MISSING_NOENTRY;
|
||||||
|
args.th = th;
|
||||||
args.recv = recv;
|
args.recv = recv;
|
||||||
args.me = me;
|
args.me = me;
|
||||||
args.mid = mid;
|
args.mid = mid;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user