diff options
author | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-06 06:29:56 +0000 |
---|---|---|
committer | nobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-05-06 06:29:56 +0000 |
commit | 72c4fc72835ea7ea247b11b140c0f3133086123b (patch) | |
tree | de562beb3394090a2f945c01995dd8e5ce683625 /random.c | |
parent | 80c9b6646ee47c4f395bfa74550cab7d010dfb14 (diff) | |
download | ruby-72c4fc72835ea7ea247b11b140c0f3133086123b.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.c | 7 |
1 files changed, 2 insertions, 5 deletions
@@ -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; } |