[Python-Dev] [Python-checkins] cpython (merge 3.2 -> default): Closed reference leak of variable 'k' in function ste_new which wasn't decrefed

Stefan Krah stefan at bytereef.org
Wed Sep 12 17:42:11 CEST 2012


christian.heimes <python-checkins at 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




More information about the Python-Dev mailing list