From 5871e19942fdcf83653924ae9a849941669c1143 Mon Sep 17 00:00:00 2001 From: Raymond Hettinger Date: Sat, 22 Oct 2022 07:21:06 -0500 Subject: [PATCH] GH-98363: Slicing isn't necessary. A size reduction will suffice. (GH-98538) --- Modules/itertoolsmodule.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/Modules/itertoolsmodule.c b/Modules/itertoolsmodule.c index 578c2d94288548..381ec3b31d525e 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 = {