summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-07-07 10:32:37 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-07-07 10:32:54 +0900
commit40252169fc9762f222106f116f2bcc510b038bf9 (patch)
tree7a0535e4cfe7b2978154481ac2afc31563a60bbc /src
parent5cfc0d0dc07e4051411819dd6036ca20c401b531 (diff)
downloadmruby-40252169fc9762f222106f116f2bcc510b038bf9.tar.gz
mruby-40252169fc9762f222106f116f2bcc510b038bf9.zip
method_missing definition may be undefined; fix #2878
Diffstat (limited to 'src')
-rw-r--r--src/vm.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/vm.c b/src/vm.c
index 1f3b05df2..15a3926e3 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1074,9 +1074,14 @@ RETRY_TRY_BLOCK:
m = mrb_method_search_vm(mrb, &c, mid);
if (!m) {
mrb_value sym = mrb_symbol_value(mid);
+ mrb_sym missing = mrb_intern_lit(mrb, "method_missing");
- mid = mrb_intern_lit(mrb, "method_missing");
- m = mrb_method_search_vm(mrb, &c, mid);
+ m = mrb_method_search_vm(mrb, &c, missing);
+ if (!m) {
+ mrb_no_method_error(mrb, mid, n, regs+a+1,
+ "undefined method '%S' for %S", mrb_sym2str(mrb, mid), recv);
+ }
+ mid = missing;
if (n == CALL_MAXARGS) {
mrb_ary_unshift(mrb, regs[a+1], sym);
}