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 | |
| 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
| -rw-r--r-- | include/mruby.h | 1 | ||||
| -rw-r--r-- | src/state.c | 18 |
2 files changed, 13 insertions, 6 deletions
diff --git a/include/mruby.h b/include/mruby.h index fe97dd055..ed746f409 100644 --- a/include/mruby.h +++ b/include/mruby.h @@ -207,6 +207,7 @@ mrb_value mrb_str_new2(mrb_state *mrb, const char *p); mrb_state* mrb_open(void); mrb_state* mrb_open_allocf(mrb_allocf, void *ud); +void mrb_irep_free(mrb_state*, struct mrb_irep*); void mrb_close(mrb_state*); int mrb_checkstack(mrb_state*,int); 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); |
