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.
This commit is contained in:
Tom Tromey 2017-09-10 14:48:30 -06:00
parent 2039bd9f0c
commit cb791d5948
10 changed files with 92 additions and 85 deletions

View file

@ -249,36 +249,36 @@ remove_trailing_whitespace (const char *start, const char *s)
/* See documentation in cli-utils.h. */
char *
std::string
extract_arg (const char **arg)
{
const char *result;
if (!*arg)
return NULL;
return std::string ();
/* Find the start of the argument. */
*arg = skip_spaces (*arg);
if (!**arg)
return NULL;
return std::string ();
result = *arg;
/* Find the end of the argument. */
*arg = skip_to_space (*arg + 1);
if (result == *arg)
return NULL;
return std::string ();
return savestring (result, *arg - result);
return std::string (result, *arg - result);
}
/* See documentation in cli-utils.h. */
char *
std::string
extract_arg (char **arg)
{
const char *arg_const = *arg;
char *result;
std::string result;
result = extract_arg (&arg_const);
*arg += arg_const - *arg;