diff --git a/ext/-test-/random/loop.c b/ext/-test-/random/loop.c index 4f7c800500..ec4eff013e 100644 --- a/ext/-test-/random/loop.c +++ b/ext/-test-/random/loop.c @@ -38,7 +38,7 @@ loop_alloc(VALUE klass) { rand_loop_t *rnd; VALUE obj = TypedData_Make_Struct(klass, rand_loop_t, &random_loop_type, rnd); - rnd->base.seed = INT2FIX(0); + rb_random_base_init(&rnd->base); return obj; } diff --git a/include/ruby/random.h b/include/ruby/random.h index 1d45dc25b9..2e7ac75a01 100644 --- a/include/ruby/random.h +++ b/include/ruby/random.h @@ -71,6 +71,7 @@ typedef const rb_data_type_t rb_random_data_type_t; #endif void rb_random_mark(void *ptr); +void rb_random_base_init(rb_random_t *rnd); double rb_int_pair_to_real(uint32_t a, uint32_t b, int excl); void rb_rand_bytes_int32(rb_random_get_int32_func *, rb_random_t *, void *, size_t); RUBY_EXTERN const rb_data_type_t rb_random_data_type; diff --git a/random.c b/random.c index 4ceff377e3..587e93c89d 100644 --- a/random.c +++ b/random.c @@ -296,13 +296,20 @@ try_rand_if(VALUE obj, rb_random_t *rnd) return rb_rand_if(obj); } +/* :nodoc: */ +void +rb_random_base_init(rb_random_t *rnd) +{ + rnd->seed = INT2FIX(0); +} + /* :nodoc: */ static VALUE random_alloc(VALUE klass) { rb_random_mt_t *rnd; VALUE obj = TypedData_Make_Struct(klass, rb_random_mt_t, &random_mt_type, rnd); - rnd->base.seed = INT2FIX(0); + rb_random_base_init(&rnd->base); return obj; }