ruby-changes:22929
From: nobu <ko1@a...>
Date: Mon, 12 Mar 2012 07:04:26 +0900 (JST)
Subject: [ruby-changes:22929] nobu:r34978 (trunk): * random.c (Init_Random): removed rb_Random_DEFAULT and register as
nobu 2012-03-12 07:04:13 +0900 (Mon, 12 Mar 2012) New Revision: 34978 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=34978 Log: * random.c (Init_Random): removed rb_Random_DEFAULT and register as mark-object instead of global variable. Modified files: trunk/ChangeLog trunk/random.c Index: ChangeLog =================================================================== --- ChangeLog (revision 34977) +++ ChangeLog (revision 34978) @@ -1,3 +1,8 @@ +Mon Mar 12 07:04:11 2012 Nobuyoshi Nakada <nobu@r...> + + * random.c (Init_Random): removed rb_Random_DEFAULT and register as + mark-object instead of global variable. + Mon Mar 12 07:03:32 2012 Nobuyoshi Nakada <nobu@r...> * random.c (random_s_rand): ensure default PRNG is re-initialized Index: random.c =================================================================== --- random.c (revision 34977) +++ random.c (revision 34978) @@ -322,7 +322,6 @@ } VALUE rb_cRandom; -static VALUE rb_Random_DEFAULT; #define id_minus '-' #define id_plus '+' static ID id_rand, id_bytes; @@ -1124,6 +1123,8 @@ return v; } +static VALUE rand_random(int argc, VALUE *argv, rb_random_t *rnd); + /* * call-seq: * prng.rand -> float @@ -1156,7 +1157,12 @@ static VALUE random_rand(int argc, VALUE *argv, VALUE obj) { - rb_random_t *rnd = get_rnd(obj); + return rand_random(argc, argv, get_rnd(obj)); +} + +static VALUE +rand_random(int argc, VALUE *argv, rb_random_t *rnd) +{ VALUE vmax, v; if (argc == 0) { @@ -1293,8 +1299,7 @@ static VALUE random_s_rand(int argc, VALUE *argv, VALUE obj) { - rand_start(&default_rand); - return random_rand(argc, argv, rb_Random_DEFAULT); + return rand_random(argc, argv, rand_start(&default_rand)); } static st_index_t hashseed; @@ -1404,9 +1409,11 @@ rb_define_private_method(rb_cRandom, "left", random_left, 0); rb_define_method(rb_cRandom, "==", random_equal, 1); - rb_Random_DEFAULT = TypedData_Wrap_Struct(rb_cRandom, &random_data_type, &default_rand); - rb_global_variable(&rb_Random_DEFAULT); - rb_define_const(rb_cRandom, "DEFAULT", rb_Random_DEFAULT); + { + VALUE rand_default = TypedData_Wrap_Struct(rb_cRandom, &random_data_type, &default_rand); + rb_gc_register_mark_object(rand_default); + rb_define_const(rb_cRandom, "DEFAULT", rand_default); + } rb_define_singleton_method(rb_cRandom, "srand", rb_f_srand, -1); rb_define_singleton_method(rb_cRandom, "rand", random_s_rand, -1); -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/