christian.heimes <python-checkins@python.org> wrote:
summary: Closed reference leak of variable 'k' in function ste_new which wasn't decrefed in error cases
files: Python/symtable.c | 3 ++- 1 files changed, 2 insertions(+), 1 deletions(-)
diff --git a/Python/symtable.c b/Python/symtable.c --- a/Python/symtable.c +++ b/Python/symtable.c @@ -24,7 +24,7 @@ void *key, int lineno, int col_offset) { PySTEntryObject *ste = NULL; - PyObject *k; + PyObject *k = NULL;
k = PyLong_FromVoidPtr(key); if (k == NULL) @@ -79,6 +79,7 @@
return ste; fail: + Py_XDECREF(k); Py_XDECREF(ste);
I think 'k' is owned by the PySTEntryObject after it is assigned here: ste->ste_id = k; So ste_dealloc() will call Py_XDECREF(k) a second time. Stefan Krah