diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-08-04 06:44:53 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-08-04 06:44:53 +0900 |
| commit | 472d214a71f69fe25e681d9fea6a04fa12e60fb0 (patch) | |
| tree | e27dbbfbe08a82b8592b264fd81e4b87c9367db2 /src/vm.c | |
| parent | 730f53045eb85cf995b0b675ea2818a682810a4f (diff) | |
| download | mruby-472d214a71f69fe25e681d9fea6a04fa12e60fb0.tar.gz mruby-472d214a71f69fe25e681d9fea6a04fa12e60fb0.zip | |
super look-up scheme fixed; close #415
Diffstat (limited to 'src/vm.c')
| -rw-r--r-- | src/vm.c | 5 |
1 files changed, 2 insertions, 3 deletions
@@ -717,7 +717,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) ci->stackidx = mrb->stack - mrb->stbase; ci->argc = n; if (ci->argc == CALL_MAXARGS) ci->argc = -1; - ci->target_class = m->target_class; + ci->target_class = c; ci->pc = pc + 1; ci->acc = a; @@ -832,10 +832,9 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) int n = GETARG_C(i); recv = regs[0]; - c = mrb->ci->proc->target_class->super; + c = mrb->ci->target_class->super; m = mrb_method_search_vm(mrb, &c, mid); if (!m) { - c = mrb->ci->proc->target_class; mid = mrb_intern(mrb, "method_missing"); m = mrb_method_search_vm(mrb, &c, mid); if (n == CALL_MAXARGS) { |
