diff options
| author | Yukihiro Matz Matsumoto <[email protected]> | 2013-03-06 15:22:46 +0900 |
|---|---|---|
| committer | Yukihiro Matz Matsumoto <[email protected]> | 2013-03-06 15:22:46 +0900 |
| commit | 2e95f638cd01a92a83f3808d745f69f46b64db10 (patch) | |
| tree | ce2bdd3a88dfbf481a77345bfff786f6d0746363 /src/state.c | |
| parent | 9e8f254fb04177b1c24072a050816fb555e5d114 (diff) | |
| download | mruby-2e95f638cd01a92a83f3808d745f69f46b64db10.tar.gz mruby-2e95f638cd01a92a83f3808d745f69f46b64db10.zip | |
Cut off mrb_irep_free from mrb_close; based on a patch from @matsumoto-r; close #951
Diffstat (limited to 'src/state.c')
| -rw-r--r-- | src/state.c | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/state.c b/src/state.c index 1936b8aab..b6805a4a4 100644 --- a/src/state.c +++ b/src/state.c @@ -83,6 +83,17 @@ void mrb_free_symtbl(mrb_state *mrb); void mrb_free_heap(mrb_state *mrb); void +mrb_irep_free(mrb_state *mrb, struct mrb_irep *irep) +{ + if (!(irep->flags & MRB_ISEQ_NO_FREE)) + mrb_free(mrb, irep->iseq); + mrb_free(mrb, irep->pool); + mrb_free(mrb, irep->syms); + mrb_free(mrb, irep->lines); + mrb_free(mrb, irep); +} + +void mrb_close(mrb_state *mrb) { size_t i; @@ -94,12 +105,7 @@ mrb_close(mrb_state *mrb) mrb_free(mrb, mrb->stbase); mrb_free(mrb, mrb->cibase); for (i=0; i<mrb->irep_len; i++) { - if (!(mrb->irep[i]->flags & MRB_ISEQ_NO_FREE)) - mrb_free(mrb, mrb->irep[i]->iseq); - mrb_free(mrb, mrb->irep[i]->pool); - mrb_free(mrb, mrb->irep[i]->syms); - mrb_free(mrb, mrb->irep[i]->lines); - mrb_free(mrb, mrb->irep[i]); + mrb_irep_free(mrb, mrb->irep[i]); } mrb_free(mrb, mrb->irep); mrb_free(mrb, mrb->rescue); |
