summaryrefslogtreecommitdiffhomepage
path: root/src/state.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2013-11-07 04:20:46 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2013-11-07 04:20:46 +0900
commit677a2ac22633473fb286d7297a8585c01fe7394b (patch)
treeb0052f5b50bfb490c9780c6dd0645a2742aaf655 /src/state.c
parente92d4e2680716d3e16a264e46394cb6e458699f9 (diff)
downloadmruby-677a2ac22633473fb286d7297a8585c01fe7394b.tar.gz
mruby-677a2ac22633473fb286d7297a8585c01fe7394b.zip
irep->pool not to be GCed
Diffstat (limited to 'src/state.c')
-rw-r--r--src/state.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/state.c b/src/state.c
index 1ea76a107..77e45ba8f 100644
--- a/src/state.c
+++ b/src/state.c
@@ -109,8 +109,14 @@ void mrb_free_heap(mrb_state *mrb);
void
mrb_irep_free(mrb_state *mrb, mrb_irep *irep)
{
+ size_t i;
+
if (!(irep->flags & MRB_ISEQ_NO_FREE))
mrb_free(mrb, irep->iseq);
+ for (i=0; i<irep->plen; i++) {
+ if (irep->pool[i].type == MRB_TT_STRING)
+ mrb_free(mrb, irep->pool[i].value.s);
+ }
mrb_free(mrb, irep->pool);
mrb_free(mrb, irep->syms);
mrb_free(mrb, (void *)irep->filename);