|
|
@ -4277,11 +4277,10 @@ Array_subscript(PyObject *myself, PyObject *item) |
|
|
PyObject *np; |
|
|
PyObject *np; |
|
|
Py_ssize_t start, stop, step, slicelen, cur, i; |
|
|
Py_ssize_t start, stop, step, slicelen, cur, i; |
|
|
|
|
|
|
|
|
if (PySlice_GetIndicesEx(item, |
|
|
|
|
|
self->b_length, &start, &stop, |
|
|
|
|
|
&step, &slicelen) < 0) { |
|
|
|
|
|
|
|
|
if (PySlice_Unpack(item, &start, &stop, &step) < 0) { |
|
|
return NULL; |
|
|
return NULL; |
|
|
} |
|
|
} |
|
|
|
|
|
slicelen = PySlice_AdjustIndices(self->b_length, &start, &stop, step); |
|
|
|
|
|
|
|
|
stgdict = PyObject_stgdict((PyObject *)self); |
|
|
stgdict = PyObject_stgdict((PyObject *)self); |
|
|
assert(stgdict); /* Cannot be NULL for array object instances */ |
|
|
assert(stgdict); /* Cannot be NULL for array object instances */ |
|
|
@ -4418,11 +4417,10 @@ Array_ass_subscript(PyObject *myself, PyObject *item, PyObject *value) |
|
|
else if (PySlice_Check(item)) { |
|
|
else if (PySlice_Check(item)) { |
|
|
Py_ssize_t start, stop, step, slicelen, otherlen, i, cur; |
|
|
Py_ssize_t start, stop, step, slicelen, otherlen, i, cur; |
|
|
|
|
|
|
|
|
if (PySlice_GetIndicesEx(item, |
|
|
|
|
|
self->b_length, &start, &stop, |
|
|
|
|
|
&step, &slicelen) < 0) { |
|
|
|
|
|
|
|
|
if (PySlice_Unpack(item, &start, &stop, &step) < 0) { |
|
|
return -1; |
|
|
return -1; |
|
|
} |
|
|
} |
|
|
|
|
|
slicelen = PySlice_AdjustIndices(self->b_length, &start, &stop, step); |
|
|
if ((step < 0 && start < stop) || |
|
|
if ((step < 0 && start < stop) || |
|
|
(step > 0 && start > stop)) |
|
|
(step > 0 && start > stop)) |
|
|
stop = start; |
|
|
stop = start; |
|
|
|