christian.heimes <python-check...@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


_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to