Make Enumerator::Product write-barrier protected

This commit is contained in:
Peter Zhu 2025-08-12 10:16:55 -04:00
parent 3e1e2bda49
commit a9230e76ee

View file

@ -3388,7 +3388,7 @@ static const rb_data_type_t enum_product_data_type = {
enum_product_memsize, enum_product_memsize,
enum_product_mark_and_move, enum_product_mark_and_move,
}, },
0, 0, RUBY_TYPED_FREE_IMMEDIATELY 0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
}; };
static struct enum_product * static struct enum_product *
@ -3444,7 +3444,7 @@ enum_product_initialize(int argc, VALUE *argv, VALUE obj)
if (!ptr) rb_raise(rb_eArgError, "unallocated product"); if (!ptr) rb_raise(rb_eArgError, "unallocated product");
ptr->enums = rb_ary_freeze(enums); RB_OBJ_WRITE(obj, &ptr->enums, rb_ary_freeze(enums));
return obj; return obj;
} }
@ -3462,7 +3462,7 @@ enum_product_init_copy(VALUE obj, VALUE orig)
if (!ptr1) rb_raise(rb_eArgError, "unallocated product"); if (!ptr1) rb_raise(rb_eArgError, "unallocated product");
ptr1->enums = ptr0->enums; RB_OBJ_WRITE(obj, &ptr1->enums, ptr0->enums);
return obj; return obj;
} }