diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | random.c | 5 | ||||
-rw-r--r-- | test/ruby/test_rand.rb | 1 |
3 files changed, 9 insertions, 2 deletions
@@ -1,3 +1,8 @@ +Mon Aug 3 00:32:00 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> + + * random.c (rb_random_int): arguments have to be converted to + integer. [ruby-core:24679] + Sun Aug 2 21:04:37 2009 Nobuyoshi Nakada <nobu@ruby-lang.org> * parse.y (literal_concat0): tail can be nil. [ruby-dev:38980] @@ -911,9 +911,10 @@ rb_random_int(VALUE obj, VALUE vmax) if (NIL_P(v)) { /* range like object support */ if (!(v = range_values(vmax, &beg))) { - beg = Qundef; - NUM2LONG(vmax); + v = vmax; } + v = rb_to_int(v); + beg = rb_to_int(beg); } v = rand_int(&rnd->mt, v); if (NIL_P(v)) v = INT2FIX(0); diff --git a/test/ruby/test_rand.rb b/test/ruby/test_rand.rb index b932128e23..39444af8ac 100644 --- a/test/ruby/test_rand.rb +++ b/test/ruby/test_rand.rb @@ -344,6 +344,7 @@ END 1267650600228229401496703205383).each do |w| assert_equal(w.to_i, r.int(2**100+5..2**100+9)) end + assert_equal(3, r.int(3.1..4), '[ruby-core:24679]') end def test_random_float |