1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

mark default_rand

default_rand can points a Bignum seed, so it should be marked.
This commit is contained in:
Koichi Sasada 2020-11-27 17:36:02 +09:00
parent 2db2fb9f6c
commit 5496415d31
2 changed files with 16 additions and 1 deletions

View file

@ -200,6 +200,11 @@ ractor_mark(void *ptr)
rb_gc_mark(th->self);
}
}
if (r->default_rand) {
void rb_default_rand_mark(void *); // random.c
rb_default_rand_mark(r->default_rand);
}
}
static void
@ -1773,7 +1778,10 @@ rb_ractor_default_rand(void *ptr)
{
if (rb_ractor_main_p()) {
static void *default_rnd;
if (UNLIKELY(ptr != NULL)) default_rnd = ptr;
if (UNLIKELY(ptr != NULL)) {
rb_ractor_t *cr = GET_RACTOR();
cr->default_rand = default_rnd = ptr;
}
return default_rnd;
}
else {

View file

@ -158,6 +158,13 @@ default_rand(void)
return rnd;
}
void
rb_default_rand_mark(void *ptr)
{
rb_random_mt_t *rnd = (rb_random_mt_t *)ptr;
rb_gc_mark(rnd->base.seed);
}
static rb_random_mt_t *
default_mt(void)
{