summaryrefslogtreecommitdiffhomepage
path: root/src/vm.c
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-08-04 06:44:53 +0900
committerYukihiro Matsumoto <[email protected]>2012-08-04 06:44:53 +0900
commit472d214a71f69fe25e681d9fea6a04fa12e60fb0 (patch)
treee27dbbfbe08a82b8592b264fd81e4b87c9367db2 /src/vm.c
parent730f53045eb85cf995b0b675ea2818a682810a4f (diff)
downloadmruby-472d214a71f69fe25e681d9fea6a04fa12e60fb0.tar.gz
mruby-472d214a71f69fe25e681d9fea6a04fa12e60fb0.zip
super look-up scheme fixed; close #415
Diffstat (limited to 'src/vm.c')
-rw-r--r--src/vm.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/src/vm.c b/src/vm.c
index c2b461fd0..be6ee3944 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -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) {