From: Victor Stinner Date: Thu, 5 Nov 2015 12:55:20 +0000 (+0100) Subject: Issue #25556: Fix LOAD_GLOBAL bytecode when globals type is not dict and the X-Git-Tag: v3.5.1rc1~93 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=60a1d3cd152e9340727409ee48372a7cbc31a16f;p=thirdparty%2FPython%2Fcpython.git 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 f9e8ef885995..beabfebc1c7e 100644 --- a/Python/ceval.c +++ b/Python/ceval.c @@ -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))