aboutsummaryrefslogtreecommitdiff
path: root/gdb/mi/mi-parse.c
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2017-09-10 14:48:30 -0600
committerTom Tromey <tom@tromey.com>2017-09-11 15:46:14 -0600
commitcb791d59489576280e416262eb61ab59765a0baf (patch)
tree16a968a28a8926f82e69990be93b5f86dec81ae3 /gdb/mi/mi-parse.c
parent2039bd9f0ce667f3f0ee99c18e25de1ea18a2288 (diff)
downloadgdb-cb791d59489576280e416262eb61ab59765a0baf.zip
gdb-cb791d59489576280e416262eb61ab59765a0baf.tar.gz
gdb-cb791d59489576280e416262eb61ab59765a0baf.tar.bz2
Make extract_arg return a std::string
Change extract_arg to return a std::string and fix up all the users. I think string is mildly better than unique_xmalloc_ptr<char>, when possible, because it provides a more robust API. I changed the error messages emitted from find_location_by_number to avoid either writing to a string or an extra allocation; this can be changed but I thought that the new message was not any less clear. You can see an example in the testsuite patch. ChangeLog 2017-09-11 Tom Tromey <tom@tromey.com> * demangle.c (demangle_command): Update. * breakpoint.c (disable_command): Update. (enable_command): Update. (find_location_by_number): Make "number" const. Use get_number_trailer. * cli/cli-utils.c (extract_arg): Return std::string. * probe.c (parse_probe_linespec): Update. Change types. (collect_probes): Take string arguments. (parse_probe_linespec): Likewise. (info_probes_for_ops): Update. (enable_probes_command): Update. (disable_probes_command): Update. * break-catch-sig.c (catch_signal_split_args): Update. * mi/mi-parse.c (mi_parse): Update. testsuite/ChangeLog 2017-09-11 Tom Tromey <tom@tromey.com> * gdb.base/ena-dis-br.exp (test_ena_dis_br): Update test.
Diffstat (limited to 'gdb/mi/mi-parse.c')
-rw-r--r--gdb/mi/mi-parse.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/gdb/mi/mi-parse.c b/gdb/mi/mi-parse.c
index ad1478e..cf05fa0 100644
--- a/gdb/mi/mi-parse.c
+++ b/gdb/mi/mi-parse.c
@@ -347,20 +347,14 @@ mi_parse (const char *cmd, char **token)
}
else if (strncmp (chp, "--language ", ls) == 0)
{
- char *lang_name;
- struct cleanup *old_chain;
-
option = "--language";
chp += ls;
- lang_name = extract_arg (&chp);
- old_chain = make_cleanup (xfree, lang_name);
+ std::string lang_name = extract_arg (&chp);
- parse->language = language_enum (lang_name);
+ parse->language = language_enum (lang_name.c_str ());
if (parse->language == language_unknown
|| parse->language == language_auto)
- error (_("Invalid --language argument: %s"), lang_name);
-
- do_cleanups (old_chain);
+ error (_("Invalid --language argument: %s"), lang_name.c_str ());
}
else
break;