This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

PING: [Python] Patch to fix memory leak


Ping...

I can commit this now but I need approval first.

	paul


Begin forwarded message:

> From: Paul Koning <paulkoning@comcast.net>
> Date: September 6, 2011 2:01:02 PM EDT
> To: gdb-patches@sourceware.org
> Subject: [Python] Patch to fix memory leak
> 
> PyList_Append increments the reference count of the item being appended to the list, and two of the places in the GDB Python code that use it don't take that into account.  The result is a memory leak.  The attached patch fixes that.
> 
> Tested by using a debug build of Python with reference counting enabled, and turning on dumping of final leftover objects.
> 
> I don't have commit privs.
> 
> 	paul
> 
> ChangeLog:
> 
> 2011-09-06  Paul Koning  <pkoning@equallogic.com>
> 
> 	* python/py-cmd.c (gdbpy_string_to_argv): Decrement reference
> 	count of item appended to list.
> 	* python/py-type.c (typy_fields): Likewise.
> 
> Index: python/py-cmd.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/python/py-cmd.c,v
> retrieving revision 1.15
> diff -u -r1.15 py-cmd.c
> --- python/py-cmd.c	5 Aug 2011 14:24:10 -0000	1.15
> +++ python/py-cmd.c	6 Sep 2011 17:50:48 -0000
> @@ -685,14 +685,12 @@
> 	  if (argp == NULL
> 	      || PyList_Append (py_argv, argp) < 0)
> 	    {
> -	      if (argp != NULL)
> -		{
> -		  Py_DECREF (argp);
> -		}
> +	      Py_XDECREF (argp);
> 	      Py_DECREF (py_argv);
> 	      freeargv (c_argv);
> 	      return NULL;
> 	    }
> +	  Py_DECREF (argp);
> 	}
> 
>       freeargv (c_argv);
> Index: python/py-type.c
> ===================================================================
> RCS file: /cvs/src/src/gdb/python/py-type.c,v
> retrieving revision 1.20
> diff -u -r1.20 py-type.c
> --- python/py-type.c	18 Aug 2011 16:17:39 -0000	1.20
> +++ python/py-type.c	6 Sep 2011 17:50:48 -0000
> @@ -246,6 +246,7 @@
> 	  Py_DECREF (result);
> 	  return NULL;
> 	}
> +      Py_DECREF (dict);
>     }
> 
>   return result;
> 


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]