summaryrefslogtreecommitdiffstats
path: root/Python
diff options
context:
space:
mode:
Diffstat (limited to 'Python')
-rw-r--r--Python/ceval.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/Python/ceval.c b/Python/ceval.c
index 264ba30..9d65495 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -1646,6 +1646,22 @@ eval_code2(PyCodeObject *co, PyObject *globals, PyObject *locals,
case LOAD_DEREF:
x = freevars[oparg];
w = PyCell_Get(x);
+ if (w == NULL) {
+ if (oparg < f->f_ncells)
+ v = PyTuple_GetItem(co->co_cellvars,
+ oparg);
+ else
+ v = PyTuple_GetItem(
+ co->co_freevars,
+ oparg - f->f_ncells);
+
+ format_exc_check_arg(
+ PyExc_UnboundLocalError,
+ UNBOUNDLOCAL_ERROR_MSG,
+ v);
+ err = -1;
+ break;
+ }
Py_INCREF(w);
PUSH(w);
break;