[Python-checkins] GH-98363: Slicing isn't necessary. A size reduction will suffice. (GH-98538)

rhettinger webhook-mailer at python.org
Sat Oct 22 08:21:14 EDT 2022


https://github.com/python/cpython/commit/5871e19942fdcf83653924ae9a849941669c1143
commit: 5871e19942fdcf83653924ae9a849941669c1143
branch: main
author: Raymond Hettinger <rhettinger at users.noreply.github.com>
committer: rhettinger <rhettinger at users.noreply.github.com>
date: 2022-10-22T07:21:06-05:00
summary:

GH-98363: Slicing isn't necessary. A size reduction will suffice. (GH-98538)

files:
M Modules/itertoolsmodule.c

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 = {



More information about the Python-checkins mailing list