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.
This commit is contained in:
parent
4d11a94fb6
commit
60a1d3cd15
|
@ -2363,6 +2363,10 @@ PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
|
|||
/* 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))
|
||||
|
|
Loading…
Reference in New Issue