summaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-05-26 11:18:16 +0900
committerYukihiro Matsumoto <[email protected]>2012-05-26 11:18:16 +0900
commitf6d539eabd305d40afe18639d2e19e0fb8dafc55 (patch)
treeda04c5697e45b10599daa1e69af545de1c3aeb00 /src
parentf4f69489610014f92b8885640360035e202e2537 (diff)
downloadmruby-f6d539eabd305d40afe18639d2e19e0fb8dafc55.tar.gz
mruby-f6d539eabd305d40afe18639d2e19e0fb8dafc55.zip
clear arena_idx after exiting scope; close #195
Diffstat (limited to 'src')
-rw-r--r--src/codegen.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/codegen.c b/src/codegen.c
index 5e2b7083f..11e9eb236 100644
--- a/src/codegen.c
+++ b/src/codegen.c
@@ -64,6 +64,7 @@ typedef struct scope {
int nlocals;
int nregs;
+ int ai;
int idx;
} codegen_scope;
@@ -1849,6 +1850,7 @@ scope_new(mrb_state *mrb, codegen_scope *prev, node *lv)
p->lv = lv;
p->sp += node_len(lv)+2;
p->nlocals = p->sp;
+ p->ai = mrb->arena_idx;
p->idx = mrb->irep_len++;
@@ -1882,6 +1884,7 @@ scope_finish(codegen_scope *s, int idx)
irep->nlocals = s->nlocals;
irep->nregs = s->nregs;
+ s->mrb->arena_idx = s->ai;
mrb_pool_close(s->mpool);
}