summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorDaniel Bovensiepen <[email protected]>2012-09-20 18:40:31 +0800
committerDaniel Bovensiepen <[email protected]>2012-09-20 18:40:31 +0800
commit3d323802de816d9932179072d5f98fd6143edc9d (patch)
tree776cccd2f29e96ba53e5f7bf73c60885d98d2036
parenta8d418d5b128bc1f63092fafd4037029b36c1748 (diff)
parent15cf8fdea4a6598aa470e698e8cbc9b9b492319d (diff)
downloadmruby-3d323802de816d9932179072d5f98fd6143edc9d.tar.gz
mruby-3d323802de816d9932179072d5f98fd6143edc9d.zip
Merge remote-tracking branch 'upstream/master' into mrbgems
-rw-r--r--src/vm.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/vm.c b/src/vm.c
index 75a4cd442..97c14e7aa 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -843,12 +843,17 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
/* prepare stack */
if (MRB_PROC_CFUNC_P(m)) {
- mrb->stack[0] = m->body.func(mrb, recv);
+ recv = m->body.func(mrb, recv);
mrb->arena_idx = ai;
if (mrb->exc) goto L_RAISE;
/* pop stackpos */
regs = mrb->stack = mrb->stbase + mrb->ci->stackidx;
+ regs[mrb->ci->acc] = recv;
cipop(mrb);
+ irep = mrb->ci->proc->body.irep;
+ pool = irep->pool;
+ syms = irep->syms;
+ pc = mrb->ci->pc;
NEXT;
}
else {