mirror of
https://github.com/ruby/ruby.git
synced 2025-08-15 13:39:04 +02: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);
|
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
|
static void
|
||||||
|
@ -1773,7 +1778,10 @@ rb_ractor_default_rand(void *ptr)
|
||||||
{
|
{
|
||||||
if (rb_ractor_main_p()) {
|
if (rb_ractor_main_p()) {
|
||||||
static void *default_rnd;
|
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;
|
return default_rnd;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
|
7
random.c
7
random.c
|
@ -158,6 +158,13 @@ default_rand(void)
|
||||||
return rnd;
|
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 *
|
static rb_random_mt_t *
|
||||||
default_mt(void)
|
default_mt(void)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue