]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-132713: Simplify list_repr_impl() (#132811)
authorVictor Stinner <vstinner@python.org>
Wed, 23 Apr 2025 06:59:30 +0000 (08:59 +0200)
committerGitHub <noreply@github.com>
Wed, 23 Apr 2025 06:59:30 +0000 (08:59 +0200)
Objects/listobject.c

index 3f665a4929f14e33df536905bb70e725d5824b71..2ac4ce095fcadd00275259b13d3c03b732c1472e 100644 (file)
@@ -595,12 +595,8 @@ list_repr_impl(PyListObject *v)
     /* Do repr() on each element.  Note that this may mutate the list,
        so must refetch the list size on each iteration. */
     for (Py_ssize_t i = 0; i < Py_SIZE(v); ++i) {
-        item = list_get_item_ref(v, i);
-        if (item == NULL) {
-            // List truncated while iterating on it
-            PyErr_Clear();
-            break;
-        }
+        /* Hold a strong reference since repr(item) can mutate the list */
+        item = Py_NewRef(v->ob_item[i]);
 
         if (i > 0) {
             if (PyUnicodeWriter_WriteChar(writer, ',') < 0) {