From fff07ca182f20ba11870148cad26650a2e7c9608 Mon Sep 17 00:00:00 2001 From: leviongit Date: Wed, 8 May 2024 23:03:36 +0200 Subject: [PATCH] fix: `to_a` integer ranges with `begin > end` failing example of failure: ```rb (-1..-4).to_a ``` expected result: ```rb (-1..-4).to_a ``` --- src/range.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/range.c b/src/range.c index cf04ceb31..7edb630c9 100644 --- a/src/range.c +++ b/src/range.c @@ -358,6 +358,10 @@ range_num_to_a(mrb_state *mrb, mrb_value range) if (mrb_integer_p(end)) { mrb_int a = mrb_integer(beg); mrb_int b = mrb_integer(end); + + if (a > b) { + return mrb_ary_new_capa(mrb, 0); + } mrb_int len; if (mrb_int_sub_overflow(b, a, &len)) {