[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