Use std::string and unique_xmalloc_ptr in demangle_command
Change demangle_command to use std::string and unique_xmalloc_ptr, removing some cleanups. ChangeLog 2017-09-03 Tom Tromey <tom@tromey.com> * demangle.c (demangle_command): Use std::string, unique_xmalloc_ptr.
This commit is contained in:
parent
b57af50345
commit
453437863c
|
@ -1,3 +1,8 @@
|
|||
2017-09-03 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* demangle.c (demangle_command): Use std::string,
|
||||
unique_xmalloc_ptr.
|
||||
|
||||
2017-09-03 Tom Tromey <tom@tromey.com>
|
||||
|
||||
* cli/cli-setshow.c (do_set_command): Use std::string.
|
||||
|
|
|
@ -161,41 +161,33 @@ is_cplus_marker (int c)
|
|||
static void
|
||||
demangle_command (char *args, int from_tty)
|
||||
{
|
||||
char *demangled, *name, *lang_name = NULL;
|
||||
char *arg_buf, *arg_start;
|
||||
char *demangled;
|
||||
const char *name;
|
||||
const char *arg_start;
|
||||
int processing_args = 1;
|
||||
const struct language_defn *lang;
|
||||
struct cleanup *cleanups;
|
||||
|
||||
arg_buf = xstrdup (args != NULL ? args : "");
|
||||
cleanups = make_cleanup (xfree, arg_buf);
|
||||
arg_start = arg_buf;
|
||||
std::string arg_buf = args != NULL ? args : "";
|
||||
arg_start = arg_buf.c_str ();
|
||||
|
||||
gdb::unique_xmalloc_ptr<char> lang_name;
|
||||
while (processing_args
|
||||
&& *arg_start == '-')
|
||||
{
|
||||
char *p = skip_to_space (arg_start);
|
||||
const char *p = skip_to_space_const (arg_start);
|
||||
|
||||
if (strncmp (arg_start, "-l", p - arg_start) == 0)
|
||||
{
|
||||
char *lang_name_end;
|
||||
|
||||
lang_name = skip_spaces (p);
|
||||
lang_name_end = skip_to_space (lang_name);
|
||||
lang_name = savestring (lang_name, lang_name_end - lang_name);
|
||||
make_cleanup (xfree, lang_name);
|
||||
p = lang_name_end;
|
||||
}
|
||||
lang_name.reset (extract_arg_const (&p));
|
||||
else if (strncmp (arg_start, "--", p - arg_start) == 0)
|
||||
processing_args = 0;
|
||||
else
|
||||
{
|
||||
*p = '\0';
|
||||
gdb::unique_xmalloc_ptr<char> option (extract_arg_const (&p));
|
||||
error (_("Unrecognized option '%s' to demangle command. "
|
||||
"Try \"help demangle\"."), arg_start);
|
||||
"Try \"help demangle\"."), option.get ());
|
||||
}
|
||||
|
||||
arg_start = skip_spaces (p);
|
||||
arg_start = skip_spaces_const (p);
|
||||
}
|
||||
|
||||
name = arg_start;
|
||||
|
@ -207,9 +199,9 @@ demangle_command (char *args, int from_tty)
|
|||
{
|
||||
enum language lang_enum;
|
||||
|
||||
lang_enum = language_enum (lang_name);
|
||||
lang_enum = language_enum (lang_name.get ());
|
||||
if (lang_enum == language_unknown)
|
||||
error (_("Unknown language \"%s\""), lang_name);
|
||||
error (_("Unknown language \"%s\""), lang_name.get ());
|
||||
lang = language_def (lang_enum);
|
||||
}
|
||||
else
|
||||
|
@ -223,8 +215,6 @@ demangle_command (char *args, int from_tty)
|
|||
}
|
||||
else
|
||||
error (_("Can't demangle \"%s\""), name);
|
||||
|
||||
do_cleanups (cleanups);
|
||||
}
|
||||
|
||||
extern initialize_file_ftype _initialize_demangler; /* -Wmissing-prototypes */
|
||||
|
|
Loading…
Reference in New Issue