From 7be940942cf5658c5ca21e963ce002577b15e46b Mon Sep 17 00:00:00 2001 From: leviongit Date: Sun, 4 May 2025 04:10:39 +0200 Subject: [PATCH] `random.c` : treat ranges where `r.begin > r.end` the same way cruby does --- mrbgems/mruby-random/src/random.c | 4 ++-- mrbgems/mruby-random/test/random.rb | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/mrbgems/mruby-random/src/random.c b/mrbgems/mruby-random/src/random.c index 69445e1fc..a500cfefa 100644 --- a/mrbgems/mruby-random/src/random.c +++ b/mrbgems/mruby-random/src/random.c @@ -146,7 +146,7 @@ static mrb_value rand_range_int(mrb_state *mrb, rand_state *t, mrb_int begin, mrb_int end, mrb_bool excl) { mrb_int span = end - begin + (excl ? 0 : 1); - if (span == 0) + if (span <= 0) return mrb_nil_value(); return mrb_int_value(mrb, (rand_i(t, span)) + begin); @@ -158,7 +158,7 @@ rand_range_float(mrb_state *mrb, rand_state *t, mrb_float begin, mrb_float end, mrb_bool excl) { mrb_float span = end - begin + (excl ? 0.0 : 1.0); - if (span == 0.0) + if (span <= 0.0) return mrb_nil_value(); return mrb_float_value(mrb, rand_real(t) * span + begin); diff --git a/mrbgems/mruby-random/test/random.rb b/mrbgems/mruby-random/test/random.rb index 2597d567a..27fb081fa 100644 --- a/mrbgems/mruby-random/test/random.rb +++ b/mrbgems/mruby-random/test/random.rb @@ -147,4 +147,5 @@ assert("Kernel#rand()") do assert_equal(rand(0.0...0), nil) assert_equal(rand(0...0.0), nil) assert_equal(rand(0.0...0.0), nil) + assert_equal(rand(1..0), nil) end