aboutsummaryrefslogtreecommitdiff
path: root/gdb/utils.c
diff options
context:
space:
mode:
authorAndrew Burgess <andrew.burgess@embecosm.com>2021-08-17 13:29:22 +0100
committerAndrew Burgess <andrew.burgess@embecosm.com>2021-09-07 15:10:37 +0100
commit747656685b3e8477868478cd927fbb2834937aff (patch)
tree029d92127ea0f6b4a181712a606fe23e1b090e69 /gdb/utils.c
parent64dbf74d428e97de737c13f42767dab88493f187 (diff)
downloadbinutils-747656685b3e8477868478cd927fbb2834937aff.zip
binutils-747656685b3e8477868478cd927fbb2834937aff.tar.gz
binutils-747656685b3e8477868478cd927fbb2834937aff.tar.bz2
gdb: make use of std::string in utils.c
Replace some of the manual string management (malloc/free) with std::string when creating commands in utils.c. Things are a little bit messy as, creating the prefix commands (using add_basic_prefix_cmd and add_show_prefix_cmd), doesn't copy the doc string, while creating the actual set/show commands (using add_setshow_enum_cmd) does copy the doc string. As a result, I have retained the use of xstrprintf when creating the prefix command doc strings, but switched to using std::string when creating the actual set/show commands. There should be no user visible changes after this commit.
Diffstat (limited to 'gdb/utils.c')
-rw-r--r--gdb/utils.c54
1 files changed, 25 insertions, 29 deletions
diff --git a/gdb/utils.c b/gdb/utils.c
index 0009cb1..0a7c270 100644
--- a/gdb/utils.c
+++ b/gdb/utils.c
@@ -508,19 +508,21 @@ add_internal_problem_command (struct internal_problem *problem)
{
struct cmd_list_element **set_cmd_list;
struct cmd_list_element **show_cmd_list;
- char *set_doc;
- char *show_doc;
set_cmd_list = XNEW (struct cmd_list_element *);
show_cmd_list = XNEW (struct cmd_list_element *);
*set_cmd_list = NULL;
*show_cmd_list = NULL;
- set_doc = xstrprintf (_("Configure what GDB does when %s is detected."),
- problem->name);
-
- show_doc = xstrprintf (_("Show what GDB does when %s is detected."),
- problem->name);
+ /* The add_basic_prefix_cmd and add_show_prefix_cmd functions take
+ ownership of the string passed in, which is why we don't need to free
+ set_doc and show_doc in this function. */
+ const char *set_doc
+ = xstrprintf (_("Configure what GDB does when %s is detected."),
+ problem->name);
+ const char *show_doc
+ = xstrprintf (_("Show what GDB does when %s is detected."),
+ problem->name);
add_basic_prefix_cmd (problem->name, class_maintenance, set_doc,
set_cmd_list,
@@ -532,48 +534,42 @@ add_internal_problem_command (struct internal_problem *problem)
if (problem->user_settable_should_quit)
{
- set_doc = xstrprintf (_("Set whether GDB should quit "
- "when an %s is detected."),
- problem->name);
- show_doc = xstrprintf (_("Show whether GDB will quit "
- "when an %s is detected."),
- problem->name);
+ std::string set_quit_doc
+ = string_printf (_("Set whether GDB should quit when an %s is "
+ "detected."), problem->name);
+ std::string show_quit_doc
+ = string_printf (_("Show whether GDB will quit when an %s is "
+ "detected."), problem->name);
add_setshow_enum_cmd ("quit", class_maintenance,
internal_problem_modes,
&problem->should_quit,
- set_doc,
- show_doc,
+ set_quit_doc.c_str (),
+ show_quit_doc.c_str (),
NULL, /* help_doc */
NULL, /* setfunc */
NULL, /* showfunc */
set_cmd_list,
show_cmd_list);
-
- xfree (set_doc);
- xfree (show_doc);
}
if (problem->user_settable_should_dump_core)
{
- set_doc = xstrprintf (_("Set whether GDB should create a core "
- "file of GDB when %s is detected."),
- problem->name);
- show_doc = xstrprintf (_("Show whether GDB will create a core "
- "file of GDB when %s is detected."),
- problem->name);
+ std::string set_core_doc
+ = string_printf (_("Set whether GDB should create a core file of "
+ "GDB when %s is detected."), problem->name);
+ std::string show_core_doc
+ = string_printf (_("Show whether GDB will create a core file of "
+ "GDB when %s is detected."), problem->name);
add_setshow_enum_cmd ("corefile", class_maintenance,
internal_problem_modes,
&problem->should_dump_core,
- set_doc,
- show_doc,
+ set_core_doc.c_str (),
+ show_core_doc.c_str (),
NULL, /* help_doc */
NULL, /* setfunc */
NULL, /* showfunc */
set_cmd_list,
show_cmd_list);
-
- xfree (set_doc);
- xfree (show_doc);
}
}