diff options
| author | Yukihiro Matsumoto <[email protected]> | 2012-08-28 02:11:00 +0900 |
|---|---|---|
| committer | Yukihiro Matsumoto <[email protected]> | 2012-08-28 02:11:00 +0900 |
| commit | d04a7ec632731f81c7230af1c6fbb260d3742d33 (patch) | |
| tree | 8c722a941ed975907ffbbc204927dad96746b58d /src | |
| parent | 376266959f154a6646457ce85c559fe9d81145d8 (diff) | |
| download | mruby-d04a7ec632731f81c7230af1c6fbb260d3742d33.tar.gz mruby-d04a7ec632731f81c7230af1c6fbb260d3742d33.zip | |
free heap pages from mrb_close()
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); } |
