Use std::string in gdb_safe_append_history
authorTom Tromey <tom@tromey.com>
Sat, 30 Sep 2017 04:49:00 +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
gdb_safe_append_history.

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

* top.c (gdb_safe_append_history): Use std::string.

gdb/ChangeLog
gdb/top.c

index 64eb1f229819db50262c6041597b5b05daa2ad98..c6c55cf5d04e38738a2fb74557573b6d2e56b43e 100644 (file)
@@ -1,3 +1,7 @@
+2017-10-03  Tom Tromey  <tom@tromey.com>
+
+       * top.c (gdb_safe_append_history): Use std::string.
+
 2017-10-03  Tom Tromey  <tom@tromey.com>
 
        * event-top.c (stdin_event_handler): Update.
index 7efc3d50408e808d2c4d11b5a6139c7c645330b7..af27fcbcb0e3ea77b6dc3fe6bfb3dbc759dbcba8 100644 (file)
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1094,19 +1094,16 @@ static void
 gdb_safe_append_history (void)
 {
   int ret, saved_errno;
-  char *local_history_filename;
-  struct cleanup *old_chain;
 
-  local_history_filename
-    = xstrprintf ("%s-gdb%ld~", history_filename, (long) getpid ());
-  old_chain = make_cleanup (xfree, local_history_filename);
+  std::string local_history_filename
+    = string_printf ("%s-gdb%ld~", history_filename, (long) getpid ());
 
-  ret = rename (history_filename, local_history_filename);
+  ret = rename (history_filename, local_history_filename.c_str ());
   saved_errno = errno;
   if (ret < 0 && saved_errno != ENOENT)
     {
       warning (_("Could not rename %s to %s: %s"),
-              history_filename, local_history_filename,
+              history_filename, local_history_filename.c_str (),
               safe_strerror (saved_errno));
     }
   else
@@ -1122,24 +1119,23 @@ gdb_safe_append_history (void)
             to move it back anyway.  Otherwise a global history file would
             never get created!  */
           gdb_assert (saved_errno == ENOENT);
-          write_history (local_history_filename);
+          write_history (local_history_filename.c_str ());
        }
       else
        {
-         append_history (command_count, local_history_filename);
+         append_history (command_count, local_history_filename.c_str ());
          if (history_is_stifled ())
-           history_truncate_file (local_history_filename, history_max_entries);
+           history_truncate_file (local_history_filename.c_str (),
+                                  history_max_entries);
        }
 
-      ret = rename (local_history_filename, history_filename);
+      ret = rename (local_history_filename.c_str (), history_filename);
       saved_errno = errno;
       if (ret < 0 && saved_errno != EEXIST)
         warning (_("Could not rename %s to %s: %s"),
-                local_history_filename, history_filename,
+                local_history_filename.c_str (), history_filename,
                 safe_strerror (saved_errno));
     }
-
-  do_cleanups (old_chain);
 }
 
 /* Read one line from the command input stream `instream' into a local