From 75ae3d3e23cf7c27d66c1eb14e0d09331aa1d8c7 Mon Sep 17 00:00:00 2001 From: "Yukihiro \"Matz\" Matsumoto" Date: Wed, 17 Mar 2021 09:44:20 +0900 Subject: range.c: fixed a begin-less ranges issue. --- src/range.c | 2 +- test/t/array.rb | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/range.c b/src/range.c index a109257c0..cb60bb63c 100644 --- a/src/range.c +++ b/src/range.c @@ -409,7 +409,7 @@ mrb_range_beg_len(mrb_state *mrb, mrb_value range, mrb_int *begp, mrb_int *lenp, if (!mrb_range_p(range)) return MRB_RANGE_TYPE_MISMATCH; r = mrb_range_ptr(mrb, range); - beg = mrb_int(mrb, RANGE_BEG(r)); + beg = mrb_nil_p(RANGE_BEG(r)) ? 0 : mrb_int(mrb, RANGE_BEG(r)); end = mrb_nil_p(RANGE_END(r)) ? -1 : mrb_int(mrb, RANGE_END(r)); excl = mrb_nil_p(RANGE_END(r)) ? 0 : RANGE_EXCL(r); diff --git a/test/t/array.rb b/test/t/array.rb index 1e224a034..7410233d3 100644 --- a/test/t/array.rb +++ b/test/t/array.rb @@ -58,6 +58,7 @@ assert('Array#[]', '15.2.12.5.4') do assert_equal(["b", "c"], a[1,2]) assert_equal(["b", "c", "d"], a[1..-2]) assert_equal(["b", "c", "d", "e"], a[1..]) + assert_equal(["a", "b", "c"], a[..2]) skip unless Object.const_defined?(:Float) assert_equal("b", a[1.1]) end -- cgit v1.2.3