aboutsummaryrefslogtreecommitdiffstats
path: root/random.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-06 06:29:56 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-05-06 06:29:56 +0000
commit6785f77fae5c7f6053d5c36e7fdf7bd6b874d814 (patch)
treede562beb3394090a2f945c01995dd8e5ce683625 /random.c
parentf726bb7eb6acd205f612afca207ad0f6edcc62e9 (diff)
downloadruby-6785f77fae5c7f6053d5c36e7fdf7bd6b874d814.tar.gz
random.c: default seed mark
* random.c (Init_Random_default): since seed is marked by random_mark, no needs to mark itself as a global variable. allocate Random instance before making the seed value, to get rid of the potential risk of GC during the allocation. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@54927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'random.c')
-rw-r--r--random.c7
1 files changed, 2 insertions, 5 deletions
diff --git a/random.c b/random.c
index 65db49d677..72b0f46b0f 100644
--- a/random.c
+++ b/random.c
@@ -1544,13 +1544,10 @@ Init_Random_default(void)
{
rb_random_t *r = &default_rand;
struct MT *mt = &r->mt;
- VALUE v;
+ VALUE v = TypedData_Wrap_Struct(rb_cRandom, &random_data_type, r);
- r->seed = init_randomseed(mt);
- rb_global_variable(&r->seed);
-
- v = TypedData_Wrap_Struct(rb_cRandom, &random_data_type, r);
rb_gc_register_mark_object(v);
+ r->seed = init_randomseed(mt);
return v;
}