diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-12-12 09:51:30 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2015-12-12 09:51:30 +0000 |
commit | d6a698dd42ee1231db85e2667b185afb32e73c4a (patch) | |
tree | 40ae0953c74670fb02adc89a23ec906f1c3d4fe9 /vm_eval.c | |
parent | a45fed61f0feaa0d94486919097fed2a9c141f1f (diff) | |
download | ruby-d6a698dd42ee1231db85e2667b185afb32e73c4a.tar.gz |
vm_eval.c: hook after method_missing
* vm_eval.c (rb_check_funcall_with_hook): call hook after
method_missing call when missing.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53057 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'vm_eval.c')
-rw-r--r-- | vm_eval.c | 7 |
1 files changed, 4 insertions, 3 deletions
@@ -483,9 +483,10 @@ rb_check_funcall_with_hook(VALUE recv, ID mid, int argc, const VALUE *argv, me = rb_search_method_entry(recv, mid); if (!check_funcall_callable(th, me)) { - (*hook)(FALSE, recv, mid, argc, argv, arg); - return check_funcall_missing(th, klass, recv, mid, argc, argv, - respond, Qundef); + VALUE ret = check_funcall_missing(th, klass, recv, mid, argc, argv, + respond, Qundef); + (*hook)(ret != Qundef, recv, mid, argc, argv, arg); + return ret; } stack_check(); (*hook)(TRUE, recv, mid, argc, argv, arg); |