should adjust stack size when irep->nregs is larger than allocate size; close #835

This commit is contained in:
Yukihiro Matz Matsumoto
2013-02-10 23:54:57 +09:00
parent 06c06d5c36
commit 75ae568236
+4
View File
@@ -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;