summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2021-03-17 09:44:20 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2021-03-17 09:48:27 +0900
commit75ae3d3e23cf7c27d66c1eb14e0d09331aa1d8c7 (patch)
treebfec34c48394743122637079e2463d34e72611ed
parent80f6b14ac148b2b7e840ad9d404bfe253adf21d8 (diff)
downloadmruby-75ae3d3e23cf7c27d66c1eb14e0d09331aa1d8c7.tar.gz
mruby-75ae3d3e23cf7c27d66c1eb14e0d09331aa1d8c7.zip
range.c: fixed a begin-less ranges issue.
-rw-r--r--src/range.c2
-rw-r--r--test/t/array.rb1
2 files changed, 2 insertions, 1 deletions
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