diff --git a/src/state.c b/src/state.c index 35ea71e2d..4ead6d9fa 100644 --- a/src/state.c +++ b/src/state.c @@ -185,9 +185,9 @@ mrb_close(mrb_state *mrb) mrb_protect_atexit(mrb); /* free */ + mrb_gc_free_gv(mrb); mrb_gc_destroy(mrb, &mrb->gc); mrb_free_context(mrb, mrb->root_c); - mrb_gc_free_gv(mrb); mrb_free_symtbl(mrb); mrb_free(mrb, mrb); } diff --git a/src/variable.c b/src/variable.c index e6921a7bf..57f2b15aa 100644 --- a/src/variable.c +++ b/src/variable.c @@ -251,8 +251,10 @@ mrb_gc_mark_gv(mrb_state *mrb) void mrb_gc_free_gv(mrb_state *mrb) { - if (mrb->globals) + if (mrb->globals) { iv_free(mrb, mrb->globals); + mrb->globals = NULL; + } } size_t