diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/vm.c | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -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; |
