diff options
| author | Yuichiro MASUI <[email protected]> | 2012-08-07 04:04:22 +0900 |
|---|---|---|
| committer | Yuichiro MASUI <[email protected]> | 2012-08-07 04:04:22 +0900 |
| commit | 3718599e8623387adf79b47085b4f657ff3f6922 (patch) | |
| tree | 632a390965c9fd5096feec1e3e6ae9cc93568641 /src/vm.c | |
| parent | 52ba6f5a8c79d4463167e2a3b802aa5238a52b51 (diff) | |
| download | mruby-3718599e8623387adf79b47085b4f657ff3f6922.tar.gz mruby-3718599e8623387adf79b47085b4f657ff3f6922.zip | |
Fixed memory leak when calling stack_extend in m->body.func
Diffstat (limited to 'src/vm.c')
| -rw-r--r-- | src/vm.c | 5 |
1 files changed, 3 insertions, 2 deletions
@@ -689,7 +689,7 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) struct RProc *m; struct RClass *c; mrb_callinfo *ci; - mrb_value recv; + mrb_value recv, result; mrb_sym mid = syms[GETARG_B(i)]; recv = regs[a]; @@ -731,7 +731,8 @@ mrb_run(mrb_state *mrb, struct RProc *proc, mrb_value self) else { ci->nregs = n + 2; } - mrb->stack[0] = m->body.func(mrb, recv); + result = m->body.func(mrb, recv); + mrb->stack[0] = result; mrb->arena_idx = ai; if (mrb->exc) goto L_RAISE; /* pop stackpos */ |
