binutils-gdb/gdb/python
Andrew Burgess 0a50707947 gdb/python: fix an unlikely memory leak
I noticed a possible memory leak in gdbpy_create_ptid_object, in
py-infthread.c.  We create a Tuple, and hold the reference in a
'PyObject*' local.

If we then fail to create any of the tuple contents we perform an
early exit, returning nullptr, this will leak the Tuple object.

Currently, we create the Tuple as the first action in the function,
but we don't really need the tuple until the end of the function.

In this commit I have:

  1. Moved creation of the Tuple until the end of the function, just
     before we need it.

  2. Stored the Tuple reference in a gdbpy_ref<>.  This is not
     strictly needed any more, but is (I think) good practice as
     future changes to the function will not need to worry about
     releasing the Tuple object.

  3. Taken the opportunity to replace a NULL with nullptr in this
     function.

  4. Inlined the local variable declarations to the point of first
     use.

There should be no user visible changes after this commit.

No tests as I have no idea how to make gdb_py_object_from_longest (and
friends) fail, and so trigger the memory leak.  I suspect we'd never
actually see this leak in the real world, but it doesn't hurt to clean
these things up.

Approved-By: Simon Marchi <simon.marchi@efficios.com>
2025-08-26 15:52:05 +01:00
..
lib/gdb Emit DAPException when too many variable children are reqeusted 2025-08-11 07:39:10 -06:00
py-all-events.def Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-arch.c gdb/python: add void_type () method to gdb.Architecture object 2025-02-04 13:56:49 +00:00
py-auto-load.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-block.c gdb/python: check return value of PyObject_New in all cases 2025-08-21 11:47:17 +01:00
py-bpevent.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-breakpoint.c Change file initialization to use INIT_GDB_FILE macro 2025-06-26 06:15:59 -06:00
py-cmd.c gdb/python/guile: remove some explicit calls to xmalloc 2025-06-06 23:46:47 +01:00
py-color.c gdb/python/guile: check if styling is disabled in Color.escape_sequence 2025-05-06 11:24:28 +01:00
py-color.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-connection.c Change file initialization to use INIT_GDB_FILE macro 2025-06-26 06:15:59 -06:00
py-continueevent.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-dap.c Change file initialization to use INIT_GDB_FILE macro 2025-06-26 06:15:59 -06:00
py-disasm.c gdb/python: stop using PyObject_IsInstance in py-disasm.c 2025-04-23 15:41:35 +01:00
py-event-types.def Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-event.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-event.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-events.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-evtregistry.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-evts.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-exitedevent.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-finishbreakpoint.c gdb: modernize get_frame_pc_if_available 2025-08-14 13:40:19 -03:00
py-frame.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-framefilter.c gdb: rename address_class -> location_class 2025-08-19 09:49:46 -04:00
py-function.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-gdb-readline.c Require Python 3.4 2025-05-30 07:09:53 -06:00
py-inferior.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-infevents.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-infthread.c gdb/python: fix an unlikely memory leak 2025-08-26 15:52:05 +01:00
py-instruction.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-instruction.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-lazy-string.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-linetable.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-membuf.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-mi.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-micmd.c Change file initialization to use INIT_GDB_FILE macro 2025-06-26 06:15:59 -06:00
py-newobjfileevent.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-objfile.c gdb: make iterate_over_objfiles_in_search_order methods of program_space and solib_ops 2025-08-22 10:45:47 -04:00
py-param.c gdb/python: allow empty gdb.Parameter.__doc__ string 2025-05-13 14:33:20 +01:00
py-prettyprint.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-progspace.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-record-btrace.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-record-btrace.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-record-full.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-record-full.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-record.c gdb/python: check return value of PyObject_New in all cases 2025-08-21 11:47:17 +01:00
py-record.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-ref.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-registers.c gdb/python: don't use PyObject_IsInstance in py-registers.c 2025-04-23 23:50:22 +01:00
py-signalevent.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-stopevent.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-stopevent.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-symbol.c gdb: rename address_class -> location_class 2025-08-19 09:49:46 -04:00
py-symtab.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-threadevent.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-tui.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-type.c gdb: rename address_class -> location_class 2025-08-19 09:49:46 -04:00
py-uiout.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-unwind.c gdb/python: check return value of PyObject_New in all cases 2025-08-21 11:47:17 +01:00
py-utils.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-value.c Clean up value_struct_elt_bitpos 2025-04-17 09:25:55 -06:00
py-varobj.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
py-xmethods.c Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00
python-config.py Run isort 2024-04-02 11:21:39 -06:00
python-internal.h gdb/python/guile: fix segfault from nested prefix command creation 2025-06-04 09:39:33 +01:00
python.c gdb: allow gdb.Color to work correctly with pagination 2025-08-24 16:57:32 +01:00
python.h Update copyright dates to include 2025 2025-04-08 10:54:39 -06:00