From 5871e19942fdcf83653924ae9a849941669c1143 Mon Sep 17 00:00:00 2001
From: Raymond Hettinger <rhettinger@users.noreply.github.com>
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 578c2d94288..381ec3b31d5 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 = {
-- 
GitLab