From: Raymond Hettinger Date: Sat, 22 Oct 2022 12:21:06 +0000 (-0500) Subject: GH-98363: Slicing isn't necessary. A size reduction will suffice. (GH-98538) X-Git-Tag: v3.12.0a1~25 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5871e19942fdcf83653924ae9a849941669c1143;p=thirdparty%2FPython%2Fcpython.git GH-98363: Slicing isn't necessary. A size reduction will suffice. (GH-98538) --- diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index 578c2d942885..381ec3b31d52 100644 --- a/Modules/itertoolsmodule.c +++ b/Modules/itertoolsmodule.c @@ -167,23 +167,22 @@ batched_next(batchedobject *bo) null_item: if (PyErr_Occurred()) { - if (PyErr_ExceptionMatches(PyExc_StopIteration)) { - PyErr_Clear(); - } else { - /* input raised an exception other than StopIteration */ + if (!PyErr_ExceptionMatches(PyExc_StopIteration)) { + /* Input raised an exception other than StopIteration */ Py_CLEAR(bo->it); Py_DECREF(result); return NULL; } + PyErr_Clear(); } if (i == 0) { Py_CLEAR(bo->it); Py_DECREF(result); return NULL; } - PyObject *short_list = PyList_GetSlice(result, 0, i); - Py_DECREF(result); - return short_list; + /* Elements in result[i:] are still NULL */ + Py_SET_SIZE(result, i); + return result; } static PyTypeObject batched_type = {