summaryrefslogtreecommitdiff
path: root/gc.c
diff options
context:
space:
mode:
Diffstat (limited to 'gc.c')
-rw-r--r--gc.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/gc.c b/gc.c
index 82590b9234..269d46daef 100644
--- a/gc.c
+++ b/gc.c
@@ -7232,7 +7232,7 @@ gc_mark_children(rb_objspace_t *objspace, VALUE obj)
gc_mark_set_parent(objspace, obj);
if (FL_TEST(obj, FL_EXIVAR)) {
- rb_mark_generic_ivar(obj);
+ rb_mark_and_update_generic_ivar(obj);
}
switch (BUILTIN_TYPE(obj)) {
@@ -10560,6 +10560,10 @@ gc_update_object_references(rb_objspace_t *objspace, VALUE obj)
gc_report(4, objspace, "update-refs: %p ->\n", (void *)obj);
+ if (FL_TEST(obj, FL_EXIVAR)) {
+ rb_mark_and_update_generic_ivar(obj);
+ }
+
switch (BUILTIN_TYPE(obj)) {
case T_CLASS:
case T_MODULE: