]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-111789: Use PyDict_GetItemRef() in Modules/_struct.c (gh-112076)
authorSerhiy Storchaka <storchaka@gmail.com>
Mon, 27 Nov 2023 17:41:47 +0000 (19:41 +0200)
committerGitHub <noreply@github.com>
Mon, 27 Nov 2023 17:41:47 +0000 (18:41 +0100)
Modules/_struct.c

index 24a4cb3b6413f1ab97e2cf8194d8daad69d5689d..bd16fa89f189455c90624fed78b992cc979e7291 100644 (file)
@@ -2257,14 +2257,13 @@ cache_struct_converter(PyObject *module, PyObject *fmt, PyStructObject **ptr)
         return 1;
     }
 
-    s_object = PyDict_GetItemWithError(state->cache, fmt);
+    if (PyDict_GetItemRef(state->cache, fmt, &s_object) < 0) {
+        return 0;
+    }
     if (s_object != NULL) {
-        *ptr = (PyStructObject *)Py_NewRef(s_object);
+        *ptr = (PyStructObject *)s_object;
         return Py_CLEANUP_SUPPORTED;
     }
-    else if (PyErr_Occurred()) {
-        return 0;
-    }
 
     s_object = PyObject_CallOneArg(state->PyStructType, fmt);
     if (s_object != NULL) {