summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/vm.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/src/vm.c b/src/vm.c
index bde38612e..7ad113d3b 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -108,6 +108,9 @@ stack_extend(mrb_state *mrb, int room, int keep)
size = mrb->stend - mrb->stbase;
off = mrb->stack - mrb->stbase;
+ /* do not leave uninitialized malloc region */
+ if (keep > size) keep = size;
+
/* Use linear stack growth.
It is slightly slower than doubling thestack space,
but it saves memory on small devices. */
@@ -554,6 +557,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self)
if (!mrb->stack) {
stack_init(mrb);
}
+ stack_extend(mrb, irep->nregs, irep->nregs);
mrb->ci->proc = proc;
mrb->ci->nregs = irep->nregs + 2;
regs = mrb->stack;