Use std::string in info_symbol_command
authorTom Tromey <tom@tromey.com>
Sat, 30 Sep 2017 04:49:36 +0000 (22:49 -0600)
committerTom Tromey <tom@tromey.com>
Tue, 3 Oct 2017 11:33:48 +0000 (05:33 -0600)
This removes a cleanup by using std::string in info_symbol_command.

2017-10-03  Tom Tromey  <tom@tromey.com>

* printcmd.c (info_symbol_command): Use std::string.

gdb/ChangeLog
gdb/printcmd.c

index c6c55cf5d04e38738a2fb74557573b6d2e56b43e..439df4a5f5d445d98639e2b2485a2aa8a23aea3e 100644 (file)
@@ -1,3 +1,7 @@
+2017-10-03  Tom Tromey  <tom@tromey.com>
+
+       * printcmd.c (info_symbol_command): Use std::string.
+
 2017-10-03  Tom Tromey  <tom@tromey.com>
 
        * top.c (gdb_safe_append_history): Use std::string.
index a254e3ab574cde1d385bc00f428225e14afb6609..994259d2dc58d7350a2f8bdd59884429c9bf455c 100644 (file)
@@ -1314,7 +1314,7 @@ info_symbol_command (char *arg, int from_tty)
            = lookup_minimal_symbol_by_pc_section (sect_addr, osect).minsym))
       {
        const char *obj_name, *mapped, *sec_name, *msym_name;
-       char *loc_string;
+       const char *loc_string;
        struct cleanup *old_chain;
 
        matches = 1;
@@ -1325,14 +1325,14 @@ info_symbol_command (char *arg, int from_tty)
 
        /* Don't print the offset if it is zero.
           We assume there's no need to handle i18n of "sym + offset".  */
+       std::string string_holder;
        if (offset)
-         loc_string = xstrprintf ("%s + %u", msym_name, offset);
+         {
+           string_holder = string_printf ("%s + %u", msym_name, offset);
+           loc_string = string_holder.c_str ();
+         }
        else
-         loc_string = xstrprintf ("%s", msym_name);
-
-       /* Use a cleanup to free loc_string in case the user quits
-          a pagination request inside printf_filtered.  */
-       old_chain = make_cleanup (xfree, loc_string);
+         loc_string = msym_name;
 
        gdb_assert (osect->objfile && objfile_name (osect->objfile));
        obj_name = objfile_name (osect->objfile);
@@ -1370,8 +1370,6 @@ info_symbol_command (char *arg, int from_tty)
            else
              printf_filtered (_("%s in section %s\n"),
                               loc_string, sec_name);
-
-       do_cleanups (old_chain);
       }
   }
   if (matches == 0)