summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-11-07 08:16:41 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2013-11-07 08:16:41 +0900
commit465f633446ed3c1077aa3bb86d250a2ad58711b2 (patch)
tree43ee31bf45f64d276c2082a8da5ed7c795c51842 /src
parentd8913dae3fc3d61f21253326e0c27e10e71d95dc (diff)
downloadmruby-465f633446ed3c1077aa3bb86d250a2ad58711b2.tar.gz
mruby-465f633446ed3c1077aa3bb86d250a2ad58711b2.zip
create Proc object before releasing memory pool
Diffstat (limited to 'src')
-rw-r--r--src/codegen.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 21714d131..cf844b9ab 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -2891,6 +2891,7 @@ struct RProc*
mrb_generate_code(mrb_state *mrb, parser_state *p)
{
codegen_scope *scope = scope_new(mrb, 0, 0);
+ struct RProc *proc;
if (!scope) {
return NULL;
@@ -2902,8 +2903,9 @@ mrb_generate_code(mrb_state *mrb, parser_state *p)
if (setjmp(scope->jmp) == 0) {
// prepare irep
codegen(scope, p->tree, NOVAL);
+ proc = mrb_proc_new(mrb, scope->irep);
mrb_pool_close(scope->mpool);
- return mrb_proc_new(mrb, scope->irep);
+ return proc;
}
else {
return NULL;