diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2015-07-07 10:32:37 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2015-07-07 10:32:54 +0900 |
| commit | 40252169fc9762f222106f116f2bcc510b038bf9 (patch) | |
| tree | 7a0535e4cfe7b2978154481ac2afc31563a60bbc /src | |
| parent | 5cfc0d0dc07e4051411819dd6036ca20c401b531 (diff) | |
| download | mruby-40252169fc9762f222106f116f2bcc510b038bf9.tar.gz mruby-40252169fc9762f222106f116f2bcc510b038bf9.zip | |
method_missing definition may be undefined; fix #2878
Diffstat (limited to 'src')
| -rw-r--r-- | src/vm.c | 9 |
1 files changed, 7 insertions, 2 deletions
@@ -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); } |
