mirror of https://github.com/python/cpython
Allow long integers in PySlice_GetIndices.
This commit is contained in:
parent
a8cd7a26d4
commit
54b42f185e
|
@ -106,20 +106,20 @@ PySlice_GetIndices(PySliceObject *r, Py_ssize_t length,
|
||||||
if (r->step == Py_None) {
|
if (r->step == Py_None) {
|
||||||
*step = 1;
|
*step = 1;
|
||||||
} else {
|
} else {
|
||||||
if (!PyInt_Check(r->step)) return -1;
|
if (!PyInt_Check(r->step) && !PyLong_Check(r->step)) return -1;
|
||||||
*step = PyInt_AsSsize_t(r->step);
|
*step = PyInt_AsSsize_t(r->step);
|
||||||
}
|
}
|
||||||
if (r->start == Py_None) {
|
if (r->start == Py_None) {
|
||||||
*start = *step < 0 ? length-1 : 0;
|
*start = *step < 0 ? length-1 : 0;
|
||||||
} else {
|
} else {
|
||||||
if (!PyInt_Check(r->start)) return -1;
|
if (!PyInt_Check(r->start) && !PyLong_Check(r->step)) return -1;
|
||||||
*start = PyInt_AsSsize_t(r->start);
|
*start = PyInt_AsSsize_t(r->start);
|
||||||
if (*start < 0) *start += length;
|
if (*start < 0) *start += length;
|
||||||
}
|
}
|
||||||
if (r->stop == Py_None) {
|
if (r->stop == Py_None) {
|
||||||
*stop = *step < 0 ? -1 : length;
|
*stop = *step < 0 ? -1 : length;
|
||||||
} else {
|
} else {
|
||||||
if (!PyInt_Check(r->stop)) return -1;
|
if (!PyInt_Check(r->stop) && !PyLong_Check(r->step)) return -1;
|
||||||
*stop = PyInt_AsSsize_t(r->stop);
|
*stop = PyInt_AsSsize_t(r->stop);
|
||||||
if (*stop < 0) *stop += length;
|
if (*stop < 0) *stop += length;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue