diff options
| -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 */ |
