From 2524d699f572c5839dcc5c6a7ce06533ac2ef0a6 Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Mon, 5 Feb 2001 17:23:16 +0000 Subject: [PATCH] SF patch 103596 by Nick Mathewson: rause UnboundLocalError for uninitialized free variables --- Python/ceval.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/Python/ceval.c b/Python/ceval.c index 264ba30a759..9d6549572f5 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;