parent
ade411465d
commit
18cecda46e
7
range.c
7
range.c
@ -1332,7 +1332,7 @@ rb_range_values(VALUE range, VALUE *begp, VALUE *endp, int *exclp)
|
|||||||
VALUE
|
VALUE
|
||||||
rb_range_beg_len(VALUE range, long *begp, long *lenp, long len, int err)
|
rb_range_beg_len(VALUE range, long *begp, long *lenp, long len, int err)
|
||||||
{
|
{
|
||||||
long beg, end, origbeg, origend;
|
long beg, end;
|
||||||
VALUE b, e;
|
VALUE b, e;
|
||||||
int excl;
|
int excl;
|
||||||
|
|
||||||
@ -1341,8 +1341,6 @@ rb_range_beg_len(VALUE range, long *begp, long *lenp, long len, int err)
|
|||||||
beg = NIL_P(b) ? 0 : NUM2LONG(b);
|
beg = NIL_P(b) ? 0 : NUM2LONG(b);
|
||||||
end = NIL_P(e) ? -1 : NUM2LONG(e);
|
end = NIL_P(e) ? -1 : NUM2LONG(e);
|
||||||
if (NIL_P(e)) excl = 0;
|
if (NIL_P(e)) excl = 0;
|
||||||
origbeg = beg;
|
|
||||||
origend = end;
|
|
||||||
if (beg < 0) {
|
if (beg < 0) {
|
||||||
beg += len;
|
beg += len;
|
||||||
if (beg < 0)
|
if (beg < 0)
|
||||||
@ -1368,8 +1366,7 @@ rb_range_beg_len(VALUE range, long *begp, long *lenp, long len, int err)
|
|||||||
|
|
||||||
out_of_range:
|
out_of_range:
|
||||||
if (err) {
|
if (err) {
|
||||||
rb_raise(rb_eRangeError, "%ld..%s%ld out of range",
|
rb_raise(rb_eRangeError, "%+"PRIsVALUE" out of range", range);
|
||||||
origbeg, excl ? "." : "", origend);
|
|
||||||
}
|
}
|
||||||
return Qnil;
|
return Qnil;
|
||||||
}
|
}
|
||||||
|
@ -2381,6 +2381,9 @@ class TestArray < Test::Unit::TestCase
|
|||||||
assert_raise(ArgumentError) { [0].freeze[0, 0, 0] = 0 }
|
assert_raise(ArgumentError) { [0].freeze[0, 0, 0] = 0 }
|
||||||
assert_raise(TypeError) { [0][:foo] = 0 }
|
assert_raise(TypeError) { [0][:foo] = 0 }
|
||||||
assert_raise(FrozenError) { [0].freeze[:foo] = 0 }
|
assert_raise(FrozenError) { [0].freeze[:foo] = 0 }
|
||||||
|
|
||||||
|
# [Bug #17271]
|
||||||
|
assert_raise_with_message(RangeError, "-7.. out of range") { [*0..5][-7..] = 1 }
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_first2
|
def test_first2
|
||||||
|
Loading…
x
Reference in New Issue
Block a user