summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authortake_cheeze <[email protected]>2014-06-06 00:54:37 +0900
committertake_cheeze <[email protected]>2014-06-06 01:04:12 +0900
commit4c1fb65d8523960ab55be5bfa6ac7a081dc33c61 (patch)
tree363c14e02717a9034ab58288b4cd616183c62bc7
parentb1dd57efa1a1b292021bfe7ba7e4ac14e0b151b9 (diff)
downloadmruby-4c1fb65d8523960ab55be5bfa6ac7a081dc33c61.tar.gz
mruby-4c1fb65d8523960ab55be5bfa6ac7a081dc33c61.zip
Release `mrb->atexit_stack` on `mrb_close`.
-rw-r--r--src/state.c10
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 */