Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 16453:2e3dd62ceac5 legacy-trunk
SF patch 103596 by Nick Mathewson: rause UnboundLocalError for
uninitialized free variables
| author | Jeremy Hylton <jeremy@alum.mit.edu> |
|---|---|
| date | Mon, 05 Feb 2001 17:23:16 +0000 |
| parents | 80c0b280a4f9 |
| children | 4652723ea655 |
line wrap: on
line diff
--- a/Python/ceval.c Mon Feb 05 13:47:13 2001 +0000 +++ b/Python/ceval.c Mon Feb 05 17:23:16 2001 +0000 @@ -1646,6 +1646,22 @@ 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;
