* range.c (rb_range_beg_len): Fix potential bug for limit case [#6203]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37775 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
b317bf06a4
commit
165da0da2f
8
range.c
8
range.c
@ -1076,16 +1076,16 @@ rb_range_beg_len(VALUE range, long *begp, long *lenp, long len, int err)
|
|||||||
if (beg < 0)
|
if (beg < 0)
|
||||||
goto out_of_range;
|
goto out_of_range;
|
||||||
}
|
}
|
||||||
|
if (end < 0)
|
||||||
|
end += len;
|
||||||
|
if (!excl)
|
||||||
|
end++; /* include end point */
|
||||||
if (err == 0 || err == 2) {
|
if (err == 0 || err == 2) {
|
||||||
if (beg > len)
|
if (beg > len)
|
||||||
goto out_of_range;
|
goto out_of_range;
|
||||||
if (end > len)
|
if (end > len)
|
||||||
end = len;
|
end = len;
|
||||||
}
|
}
|
||||||
if (end < 0)
|
|
||||||
end += len;
|
|
||||||
if (!excl)
|
|
||||||
end++; /* include end point */
|
|
||||||
len = end - beg;
|
len = end - beg;
|
||||||
if (len < 0)
|
if (len < 0)
|
||||||
len = 0;
|
len = 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user