Issue #25556: Fix LOAD_GLOBAL bytecode when globals type is not dict and the
requested name doesn't exist in globals: clear the KeyError exception before
calling PyObject_GetItem(). Fail also if the raised exception is not a
KeyError.
diff --git a/Python/ceval.c b/Python/ceval.c
index f9e8ef8..beabfeb 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -2363,6 +2363,10 @@
                 /* Slow-path if globals or builtins is not a dict */
                 v = PyObject_GetItem(f->f_globals, name);
                 if (v == NULL) {
+                    if (!PyErr_ExceptionMatches(PyExc_KeyError))
+                        goto error;
+                    PyErr_Clear();
+
                     v = PyObject_GetItem(f->f_builtins, name);
                     if (v == NULL) {
                         if (PyErr_ExceptionMatches(PyExc_KeyError))