summaryrefslogtreecommitdiff
path: root/random.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-08-03 12:16:06 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2010-08-03 12:16:06 +0000
commita4c0f7dfaefeb6d3fe83a9ac130926b7699c3186 (patch)
tree9f032e18635a1bda54a181a034c398ecf956871b /random.c
parentb80d5f14df01ac626a42668f40ede3724e4425ef (diff)
* random.c (Init_Random): add Random::DEFAULT.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@28846 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'random.c')
-rw-r--r--random.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/random.c b/random.c
index 49d0a7525f..ef0de1f750 100644
--- a/random.c
+++ b/random.c
@@ -329,7 +329,12 @@ random_mark(void *ptr)
rb_gc_mark(((rb_random_t *)ptr)->seed);
}
-#define random_free RUBY_TYPED_DEFAULT_FREE
+static void
+random_free(void *ptr)
+{
+ if (ptr != &default_rand)
+ xfree(ptr);
+}
static size_t
random_memsize(const void *ptr)
@@ -1232,6 +1237,8 @@ Init_Random(void)
rb_define_private_method(rb_cRandom, "state", random_state, 0);
rb_define_private_method(rb_cRandom, "left", random_left, 0);
rb_define_method(rb_cRandom, "==", random_equal, 1);
+ rb_define_const(rb_cRandom, "DEFAULT",
+ TypedData_Wrap_Struct(rb_cRandom, &random_data_type, &default_rand));
rb_define_singleton_method(rb_cRandom, "srand", rb_f_srand, -1);
rb_define_singleton_method(rb_cRandom, "rand", rb_f_rand, -1);