[Python-checkins] cpython (3.5): Issue #25556: Fix LOAD_GLOBAL bytecode when globals type is not dict and the
victor.stinner
python-checkins at python.org
Thu Nov 5 08:02:22 EST 2015
https://hg.python.org/cpython/rev/1e87bcf20707
changeset: 98967:1e87bcf20707
branch: 3.5
parent: 98964:88d97cd99d16
user: Victor Stinner <victor.stinner at gmail.com>
date: Thu Nov 05 13:55:20 2015 +0100
summary:
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.
files:
Python/ceval.c | 4 ++++
1 files changed, 4 insertions(+), 0 deletions(-)
diff --git a/Python/ceval.c b/Python/ceval.c
--- 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))
--
Repository URL: https://hg.python.org/cpython
More information about the Python-checkins
mailing list