From: Tom Tromey Date: Mon, 14 Aug 2017 05:38:09 +0000 (-0600) Subject: Use std::string and unique_xmalloc_ptr in demangle_command X-Git-Tag: users/ARM/embedded-binutils-master-2017q4~1218 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=453437863c82afc8ed5bfcb937a2e297957fc212;p=external%2Fbinutils.git 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 * demangle.c (demangle_command): Use std::string, unique_xmalloc_ptr. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index ba1397f..c208b1e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,10 @@ 2017-09-03 Tom Tromey + * demangle.c (demangle_command): Use std::string, + unique_xmalloc_ptr. + +2017-09-03 Tom Tromey + * cli/cli-setshow.c (do_set_command): Use std::string. 2017-09-03 Tom Tromey diff --git a/gdb/demangle.c b/gdb/demangle.c index 2d79c1d..8823569 100644 --- a/gdb/demangle.c +++ b/gdb/demangle.c @@ -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 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 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 */