This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
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;
>