mirror of
https://github.com/mruby/mruby
synced 2026-06-08 16:11:16 +00:00
should adjust stack size when irep->nregs is larger than allocate size; close #835
This commit is contained in:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user