|
|
|
@ -634,14 +634,17 @@ list_ass_slice(PyListObject *a, Py_ssize_t ilow, Py_ssize_t ihigh, PyObject *v) |
|
|
|
item = a->ob_item; |
|
|
|
/* recycle the items that we are about to remove */ |
|
|
|
s = norig * sizeof(PyObject *); |
|
|
|
if (s > sizeof(recycle_on_stack)) { |
|
|
|
recycle = (PyObject **)PyMem_MALLOC(s); |
|
|
|
if (recycle == NULL) { |
|
|
|
PyErr_NoMemory(); |
|
|
|
goto Error; |
|
|
|
/* If norig == 0, item might be NULL, in which case we may not memcpy from it. */ |
|
|
|
if (s) { |
|
|
|
if (s > sizeof(recycle_on_stack)) { |
|
|
|
recycle = (PyObject **)PyMem_MALLOC(s); |
|
|
|
if (recycle == NULL) { |
|
|
|
PyErr_NoMemory(); |
|
|
|
goto Error; |
|
|
|
} |
|
|
|
} |
|
|
|
memcpy(recycle, &item[ilow], s); |
|
|
|
} |
|
|
|
memcpy(recycle, &item[ilow], s); |
|
|
|
|
|
|
|
if (d < 0) { /* Delete -d items */ |
|
|
|
Py_ssize_t tail; |
|
|
|
|