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:
nobu 2015-08-22 05:43:59 +00:00
parent dc9c55d611
commit 1f557eaea1

View File

@ -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;