Mercurial > cpython-lru_cache-weakref
diff Python/ceval.c @ 83772:2b4b289c1abb 3.3
when arguments are cells clear the locals slot (backport of #17927)
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Tue, 14 May 2013 22:31:26 -0500 |
| parents | d18df4c90515 |
| children | 13d5b245ca14 bb8093e427f9 |
line wrap: on
line diff
--- a/Python/ceval.c Tue May 14 11:35:16 2013 -0400 +++ b/Python/ceval.c Tue May 14 22:31:26 2013 -0500 @@ -3403,10 +3403,14 @@ int arg; /* Possibly account for the cell variable being an argument. */ if (co->co_cell2arg != NULL && - (arg = co->co_cell2arg[i]) != CO_CELL_NOT_AN_ARG) + (arg = co->co_cell2arg[i]) != CO_CELL_NOT_AN_ARG) { c = PyCell_New(GETLOCAL(arg)); - else + /* Clear the local copy. */ + SETLOCAL(arg, NULL); + } + else { c = PyCell_New(NULL); + } if (c == NULL) goto fail; SETLOCAL(co->co_nlocals + i, c);
