diff options
| author | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-06-06 09:13:53 +0900 |
|---|---|---|
| committer | Yukihiro "Matz" Matsumoto <[email protected]> | 2014-06-06 09:13:53 +0900 |
| commit | 3501524ef85ffd6bdf2630444e45e4695edc5922 (patch) | |
| tree | 363c14e02717a9034ab58288b4cd616183c62bc7 | |
| parent | b1dd57efa1a1b292021bfe7ba7e4ac14e0b151b9 (diff) | |
| parent | 4c1fb65d8523960ab55be5bfa6ac7a081dc33c61 (diff) | |
| download | mruby-3501524ef85ffd6bdf2630444e45e4695edc5922.tar.gz mruby-3501524ef85ffd6bdf2630444e45e4695edc5922.zip | |
Merge pull request #2364 from take-cheeze/free_atexit_stack
Release `mrb->atexit_stack` on `mrb_close`.
| -rw-r--r-- | src/state.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/state.c b/src/state.c index ee03c8a38..ac9f88088 100644 --- a/src/state.c +++ b/src/state.c @@ -221,10 +221,12 @@ mrb_free_context(mrb_state *mrb, struct mrb_context *c) void mrb_close(mrb_state *mrb) { - mrb_int i; - - for (i = mrb->atexit_stack_len; i > 0; --i) { - mrb->atexit_stack[i - 1](mrb); + if (mrb->atexit_stack_len > 0) { + mrb_int i; + for (i = mrb->atexit_stack_len; i > 0; --i) { + mrb->atexit_stack[i - 1](mrb); + } + mrb_free(mrb, mrb->atexit_stack); } /* free */ |
