Make Random write-barrier protected

This commit is contained in:
Peter Zhu 2025-08-06 11:09:51 -04:00
parent fccd96cc6c
commit 24d0b458cd

View file

@ -263,7 +263,7 @@ const rb_data_type_t rb_random_data_type = {
random_free, random_free,
random_memsize, random_memsize,
}, },
0, 0, RUBY_TYPED_FREE_IMMEDIATELY 0, 0, RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
}; };
#define random_mt_mark rb_random_mark #define random_mt_mark rb_random_mark
@ -284,7 +284,7 @@ static const rb_data_type_t random_mt_type = {
}, },
&rb_random_data_type, &rb_random_data_type,
(void *)&random_mt_if, (void *)&random_mt_if,
RUBY_TYPED_FREE_IMMEDIATELY RUBY_TYPED_FREE_IMMEDIATELY | RUBY_TYPED_WB_PROTECTED
}; };
static rb_random_t * static rb_random_t *
@ -422,10 +422,10 @@ random_init(int argc, VALUE *argv, VALUE obj)
argc = rb_check_arity(argc, 0, 1); argc = rb_check_arity(argc, 0, 1);
rb_check_frozen(obj); rb_check_frozen(obj);
if (argc == 0) { if (argc == 0) {
rnd->seed = rand_init_default(rng, rnd); RB_OBJ_WRITE(obj, &rnd->seed, rand_init_default(rng, rnd));
} }
else { else {
rnd->seed = rand_init(rng, rnd, rb_to_int(argv[0])); RB_OBJ_WRITE(obj, &rnd->seed, rand_init(rng, rnd, rb_to_int(argv[0])));
} }
return obj; return obj;
} }