summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2012-08-06 18:53:50 -0700
committerYukihiro "Matz" Matsumoto <[email protected]>2012-08-06 18:53:50 -0700
commitf0462b4122edd6a6fb42d07f469813a05f0620d8 (patch)
tree632a390965c9fd5096feec1e3e6ae9cc93568641 /src
parent52ba6f5a8c79d4463167e2a3b802aa5238a52b51 (diff)
parent3718599e8623387adf79b47085b4f657ff3f6922 (diff)
downloadmruby-f0462b4122edd6a6fb42d07f469813a05f0620d8.tar.gz
mruby-f0462b4122edd6a6fb42d07f469813a05f0620d8.zip
Merge pull request #417 from MobiRuby/crash_when_called_stack_ext
Fixed memory leak when calling stack_extend in m->body.func
Diffstat (limited to 'src')
-rw-r--r--src/vm.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/vm.c b/src/vm.c
index cbea3ee77..ac6dc9f1a 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -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 */