summaryrefslogtreecommitdiffhomepage
path: root/mrbgems/mruby-bin-mirb
diff options
context:
space:
mode:
authorLi Yazhou <[email protected]>2014-02-14 11:16:56 +0800
committerLi Yazhou <[email protected]>2014-02-14 11:16:56 +0800
commit9ebfeac11171b061dd2021b9de8ff5dc74a58324 (patch)
tree0a62413a4311f0b6e973e0c913cdbea7f81efe4b /mrbgems/mruby-bin-mirb
parentba8a8e75c777d29bdbdcea56513d188949f131ec (diff)
downloadmruby-9ebfeac11171b061dd2021b9de8ff5dc74a58324.tar.gz
mruby-9ebfeac11171b061dd2021b9de8ff5dc74a58324.zip
keep stack with nlocals instead of nregs; fix #1706
Diffstat (limited to 'mrbgems/mruby-bin-mirb')
-rw-r--r--mrbgems/mruby-bin-mirb/tools/mirb/mirb.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
index 183003307..a9d6850a5 100644
--- a/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
+++ b/mrbgems/mruby-bin-mirb/tools/mirb/mirb.c
@@ -251,8 +251,7 @@ main(int argc, char **argv)
int n;
mrb_bool code_block_open = FALSE;
int ai;
- mrb_bool first_command = TRUE;
- unsigned int nregs;
+ unsigned int stack_keep = 0;
/* new interpreter instance */
mrb = mrb_open();
@@ -365,12 +364,12 @@ main(int argc, char **argv)
mrb_codedump_all(mrb, proc);
}
/* pass a proc for evaulation */
- nregs = first_command ? 0: proc->body.irep->nregs;
/* evaluate the bytecode */
result = mrb_context_run(mrb,
proc,
mrb_top_self(mrb),
- nregs);
+ stack_keep);
+ stack_keep = proc->body.irep->nlocals;
/* did an exception occur? */
if (mrb->exc) {
p(mrb, mrb_obj_value(mrb->exc), 0);
@@ -390,7 +389,6 @@ main(int argc, char **argv)
}
mrb_parser_free(parser);
cxt->lineno++;
- first_command = FALSE;
}
mrbc_context_free(mrb, cxt);
mrb_close(mrb);