Expand the PySlice_GetIndicesEx macro. (#1023) (#1045)

(cherry picked from commit b879fe82e7)
This commit is contained in:
Serhiy Storchaka 2017-04-08 11:18:30 +03:00 committed by GitHub
parent ae0915e42d
commit fa25f16a44
11 changed files with 47 additions and 45 deletions

View file

@ -2343,10 +2343,11 @@ array_subscr(arrayobject* self, PyObject* item)
arrayobject* ar;
int itemsize = self->ob_descr->itemsize;
if (PySlice_GetIndicesEx(item, Py_SIZE(self),
&start, &stop, &step, &slicelength) < 0) {
if (PySlice_Unpack(item, &start, &stop, &step) < 0) {
return NULL;
}
slicelength = PySlice_AdjustIndices(Py_SIZE(self), &start, &stop,
step);
if (slicelength <= 0) {
return newarrayobject(&Arraytype, 0, self->ob_descr);
@ -2414,11 +2415,11 @@ array_ass_subscr(arrayobject* self, PyObject* item, PyObject* value)
return (*self->ob_descr->setitem)(self, i, value);
}
else if (PySlice_Check(item)) {
if (PySlice_GetIndicesEx(item,
Py_SIZE(self), &start, &stop,
&step, &slicelength) < 0) {
if (PySlice_Unpack(item, &start, &stop, &step) < 0) {
return -1;
}
slicelength = PySlice_AdjustIndices(Py_SIZE(self), &start, &stop,
step);
}
else {
PyErr_SetString(PyExc_TypeError,