diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/gc.c | 13 | ||||
| -rw-r--r-- | src/state.c | 2 |
2 files changed, 15 insertions, 0 deletions
@@ -284,6 +284,19 @@ mrb_init_heap(mrb_state *mrb) #endif } +void +mrb_free_heap(mrb_state *mrb) +{ + struct heap_page *page = mrb->heaps; + struct heap_page *tmp; + + while (page) { + tmp = page; + page = page->next; + mrb_free(mrb, tmp); + } +} + static void gc_protect(mrb_state *mrb, struct RBasic *p) { diff --git a/src/state.c b/src/state.c index 28c495100..d17181eb8 100644 --- a/src/state.c +++ b/src/state.c @@ -51,6 +51,7 @@ mrb_open() } void mrb_free_symtbl(mrb_state *mrb); +void mrb_free_heap(mrb_state *mrb); void mrb_close(mrb_state *mrb) @@ -72,6 +73,7 @@ mrb_close(mrb_state *mrb) } mrb_free(mrb, mrb->irep); mrb_free_symtbl(mrb); + mrb_free_heap(mrb); mrb_free(mrb, mrb); } |
