gdb: make gdbpy_parse_command_name return a unique_xmalloc_ptr
authorSimon Marchi <simon.marchi@polymtl.ca>
Wed, 12 May 2021 17:50:05 +0000 (13:50 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Wed, 12 May 2021 17:50:09 +0000 (13:50 -0400)
commit4b8cb9dd9e1fa8dc471f640c592312a751e67eed
treec1b00367e47618893c8f265e20765a0ab7151d7f
parent3db19b2d7241efde4ca9a7b0e6f33b0929f0cf03
gdb: make gdbpy_parse_command_name return a unique_xmalloc_ptr

This avoids some manual memory management.

cmdpy_init correctly transfers ownership of the name to the
cmd_list_element, as it sets the name_allocated flag.  However,
cmdpy_init (and add_setshow_generic) doesn't, it looks like the name is
just leaked.  This is a bit tricky, because it actually creates two
commands (one set and one show), it would take a bit of refactoring of
the command code to give each their own allocated copy.  For now, just
keep doing what the current code does but in a more explicit fashion,
with an explicit release.

gdb/ChangeLog:

* python/python-internal.h (gdbpy_parse_command_name): Return
gdb::unique_xmalloc_ptr.
* python/py-cmd.c (gdbpy_parse_command_name): Likewise.
(cmdpy_init): Adjust.
* python/py-param.c (parmpy_init): Adjust.
(add_setshow_generic): Take gdb::unique_xmalloc_ptr, release it
when done.

Change-Id: Iae5bc21fe2b22f12d5f954057b0aca7ca4cd3f0d
gdb/ChangeLog
gdb/python/py-cmd.c
gdb/python/py-param.c
gdb/python/python-internal.h