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

index da7fec0ee7cf0cf826ea2d15d638301759c3ed8c..52d5932896b263e4d1358b13c63636867c9adcdd 100644 (file)
@@ -497,18 +497,14 @@ _PySymtable_Lookup(struct symtable *st, void *key)
     k = PyLong_FromVoidPtr(key);
     if (k == NULL)
         return NULL;
-    v = PyDict_GetItemWithError(st->st_blocks, k);
-    Py_DECREF(k);
-
-    if (v) {
-        assert(PySTEntry_Check(v));
-    }
-    else if (!PyErr_Occurred()) {
+    if (PyDict_GetItemRef(st->st_blocks, k, &v) == 0) {
         PyErr_SetString(PyExc_KeyError,
                         "unknown symbol table entry");
     }
+    Py_DECREF(k);
 
-    return (PySTEntryObject *)Py_XNewRef(v);
+    assert(v == NULL || PySTEntry_Check(v));
+    return (PySTEntryObject *)v;
 }
 
 long