]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-118613: Fix error handling of `_PyEval_GetFrameLocals` in `ceval.c` (#118614)
authorNikita Sobolev <mail@sobolevn.me>
Mon, 6 May 2024 07:34:56 +0000 (10:34 +0300)
committerGitHub <noreply@github.com>
Mon, 6 May 2024 07:34:56 +0000 (10:34 +0300)
Python/ceval.c

index 0d02a9887bef7ad78f353a1e5e42965c4acb4f9c..128e0417a9fd6348f68d7f0a2b489b93d9a606a3 100644 (file)
@@ -2496,17 +2496,21 @@ _PyEval_GetFrameLocals(void)
 
     if (PyFrameLocalsProxy_Check(locals)) {
         PyObject* ret = PyDict_New();
-        if (PyDict_Update(ret, locals)) {
+        if (ret == NULL) {
+            Py_DECREF(locals);
+            return NULL;
+        }
+        if (PyDict_Update(ret, locals) < 0) {
             Py_DECREF(ret);
+            Py_DECREF(locals);
             return NULL;
         }
         Py_DECREF(locals);
         return ret;
-    } else if (PyMapping_Check(locals)) {
-        return locals;
     }
 
-    return NULL;
+    assert(PyMapping_Check(locals));
+    return locals;
 }
 
 PyObject *