summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2020-08-06 10:47:15 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2020-10-12 16:21:28 +0900
commita733c6e0ea89bb20c082a9b20b10f68aa048ab6c (patch)
tree9bd02484d485b6a49e9a0255f4773204235eadc6 /src/gc.c
parent425b142168d16ff2befc0b90d887e68423db9911 (diff)
downloadmruby-a733c6e0ea89bb20c082a9b20b10f68aa048ab6c.tar.gz
mruby-a733c6e0ea89bb20c082a9b20b10f68aa048ab6c.zip
Do not call `mrb_mc_clear_by_class` at `mrb` finalization.
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/gc.c b/src/gc.c
index 28cab05b2..ab9779e1b 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -811,12 +811,14 @@ obj_free(mrb_state *mrb, struct RBasic *obj, int end)
case MRB_TT_SCLASS:
mrb_gc_free_mt(mrb, (struct RClass*)obj);
mrb_gc_free_iv(mrb, (struct RObject*)obj);
- mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
+ if (!end)
+ mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
break;
case MRB_TT_ICLASS:
if (MRB_FLAG_TEST(obj, MRB_FL_CLASS_IS_ORIGIN))
mrb_gc_free_mt(mrb, (struct RClass*)obj);
- mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
+ if (!end)
+ mrb_mc_clear_by_class(mrb, (struct RClass*)obj);
break;
case MRB_TT_ENV:
{