aboutsummaryrefslogtreecommitdiff
path: root/gdb/python/python-internal.h
diff options
context:
space:
mode:
authorSimon Marchi <simon.marchi@polymtl.ca>2021-05-12 13:50:05 -0400
committerSimon Marchi <simon.marchi@polymtl.ca>2021-05-12 13:50:09 -0400
commit4b8cb9dd9e1fa8dc471f640c592312a751e67eed (patch)
treec1b00367e47618893c8f265e20765a0ab7151d7f /gdb/python/python-internal.h
parent3db19b2d7241efde4ca9a7b0e6f33b0929f0cf03 (diff)
downloadbinutils-4b8cb9dd9e1fa8dc471f640c592312a751e67eed.zip
binutils-4b8cb9dd9e1fa8dc471f640c592312a751e67eed.tar.gz
binutils-4b8cb9dd9e1fa8dc471f640c592312a751e67eed.tar.bz2
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
Diffstat (limited to 'gdb/python/python-internal.h')
-rw-r--r--gdb/python/python-internal.h6
1 files changed, 3 insertions, 3 deletions
diff --git a/gdb/python/python-internal.h b/gdb/python/python-internal.h
index 56702ca..690d2fb 100644
--- a/gdb/python/python-internal.h
+++ b/gdb/python/python-internal.h
@@ -439,9 +439,9 @@ PyObject *gdbpy_selected_thread (PyObject *self, PyObject *args);
PyObject *gdbpy_selected_inferior (PyObject *self, PyObject *args);
PyObject *gdbpy_string_to_argv (PyObject *self, PyObject *args);
PyObject *gdbpy_parameter_value (enum var_types type, void *var);
-char *gdbpy_parse_command_name (const char *name,
- struct cmd_list_element ***base_list,
- struct cmd_list_element **start_list);
+gdb::unique_xmalloc_ptr<char> gdbpy_parse_command_name
+ (const char *name, struct cmd_list_element ***base_list,
+ struct cmd_list_element **start_list);
PyObject *gdbpy_register_tui_window (PyObject *self, PyObject *args,
PyObject *kw);