diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-11-07 04:20:46 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2013-11-07 04:20:46 +0900 |
| commit | 677a2ac22633473fb286d7297a8585c01fe7394b (patch) | |
| tree | b0052f5b50bfb490c9780c6dd0645a2742aaf655 /src/state.c | |
| parent | e92d4e2680716d3e16a264e46394cb6e458699f9 (diff) | |
| download | mruby-677a2ac22633473fb286d7297a8585c01fe7394b.tar.gz mruby-677a2ac22633473fb286d7297a8585c01fe7394b.zip | |
irep->pool not to be GCed
Diffstat (limited to 'src/state.c')
| -rw-r--r-- | src/state.c | 6 |
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); |
