Fix for problem reported by Neal Norwitz. Tighten up calculation of
slicelength. Include his test case.
This commit is contained in:
parent
75a20b19ef
commit
589dc93620
@ -374,6 +374,8 @@ vereq(a[3::-2], [3,1])
|
||||
vereq(a[-100:100:], a)
|
||||
vereq(a[100:-100:-1], a[::-1])
|
||||
vereq(a[-100L:100L:2L], [0,2,4])
|
||||
vereq(a[1000:2000:2], [])
|
||||
vereq(a[-1000:-2000:-2], [])
|
||||
# deletion
|
||||
del a[::2]
|
||||
vereq(a, [1,3])
|
||||
|
@ -151,13 +151,15 @@ PySlice_GetIndicesEx(PySliceObject *r, int length,
|
||||
if (*stop < 0) *stop = -1;
|
||||
if (*stop > length) *stop = length;
|
||||
}
|
||||
|
||||
if (*step < 0) {
|
||||
|
||||
if ((*stop - *start)*(*step) <= 0) {
|
||||
*slicelength = 0;
|
||||
}
|
||||
else if (*step < 0) {
|
||||
*slicelength = (*stop-*start+1)/(*step)+1;
|
||||
} else {
|
||||
*slicelength = (*stop-*start-1)/(*step)+1;
|
||||
}
|
||||
if (*slicelength < 0) *slicelength = 0;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user