diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-09-10 11:01:36 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-09-10 11:01:36 +0900 |
| commit | d416a5c3fe3682983cc365585aa6ac2b09763e4b (patch) | |
| tree | 8ddd9af804dc5e8fde6a03fcf1de888023b4417b /src | |
| parent | 51686a006aa4c4fc534884d232367cf28af82b85 (diff) | |
| download | mruby-d416a5c3fe3682983cc365585aa6ac2b09763e4b.tar.gz mruby-d416a5c3fe3682983cc365585aa6ac2b09763e4b.zip | |
should have preserved original method name
Diffstat (limited to 'src')
| -rw-r--r-- | src/vm.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -754,14 +754,16 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) c = mrb_class(mrb, recv); m = mrb_method_search_vm(mrb, &c, mid); if (!m) { + mrb_value sym = mrb_symbol_value(mid); + mid = mrb_intern(mrb, "method_missing"); m = mrb_method_search_vm(mrb, &c, mid); if (n == CALL_MAXARGS) { - mrb_ary_unshift(mrb, regs[a+1], mrb_symbol_value(mid)); + mrb_ary_unshift(mrb, regs[a+1], sym); } else { memmove(regs+a+2, regs+a+1, sizeof(mrb_value)*(n+1)); - SET_SYM_VALUE(regs[a+1], mid); + regs[a+1] = sym; n++; } } |
