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:
parent
2db2fb9f6c
commit
5496415d31
2 changed files with 16 additions and 1 deletions
10
ractor.c
10
ractor.c
|
@ -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 {
|
||||
|
|
7
random.c
7
random.c
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue