Return std::string from perror_string
authorTom Tromey <tom@tromey.com>
Mon, 14 Aug 2017 05:47:01 +0000 (23:47 -0600)
committerTom Tromey <tom@tromey.com>
Sun, 3 Sep 2017 19:03:09 +0000 (13:03 -0600)
Change perror_string to return a std::string, removing a cleanup in
the process.

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

* utils.c (perror_string): Return a std::string.
(throw_perror_with_name, perror_warning_with_name): Update.

gdb/ChangeLog
gdb/utils.c

index c208b1ef77e0430b8dd0f38b6d68208eedc9d8f9..5b593a678d9423a8cae89c5be99a7059750c18d9 100644 (file)
@@ -1,3 +1,8 @@
+2017-09-03  Tom Tromey  <tom@tromey.com>
+
+       * utils.c (perror_string): Return a std::string.
+       (throw_perror_with_name, perror_warning_with_name): Update.
+
 2017-09-03  Tom Tromey  <tom@tromey.com>
 
        * demangle.c (demangle_command): Use std::string,
index 3ca29b72619908059828a85037d72cf91318cccc..af50cf09d6a07f3b415f7dbbb556a1d141623642 100644 (file)
@@ -751,23 +751,15 @@ add_internal_problem_command (struct internal_problem *problem)
 }
 
 /* Return a newly allocated string, containing the PREFIX followed
-   by the system error message for errno (separated by a colon).
+   by the system error message for errno (separated by a colon).  */
 
-   The result must be deallocated after use.  */
-
-static char *
+static std::string
 perror_string (const char *prefix)
 {
   char *err;
-  char *combined;
 
   err = safe_strerror (errno);
-  combined = (char *) xmalloc (strlen (err) + strlen (prefix) + 3);
-  strcpy (combined, prefix);
-  strcat (combined, ": ");
-  strcat (combined, err);
-
-  return combined;
+  return std::string (prefix) + ": " + err;
 }
 
 /* Print the system error message for errno, and also mention STRING
@@ -777,10 +769,7 @@ perror_string (const char *prefix)
 void
 throw_perror_with_name (enum errors errcode, const char *string)
 {
-  char *combined;
-
-  combined = perror_string (string);
-  make_cleanup (xfree, combined);
+  std::string combined = perror_string (string);
 
   /* I understand setting these is a matter of taste.  Still, some people
      may clear errno but not know about bfd_error.  Doing this here is not
@@ -788,7 +777,7 @@ throw_perror_with_name (enum errors errcode, const char *string)
   bfd_set_error (bfd_error_no_error);
   errno = 0;
 
-  throw_error (errcode, _("%s."), combined);
+  throw_error (errcode, _("%s."), combined.c_str ());
 }
 
 /* See throw_perror_with_name, ERRCODE defaults here to GENERIC_ERROR.  */
@@ -805,11 +794,8 @@ perror_with_name (const char *string)
 void
 perror_warning_with_name (const char *string)
 {
-  char *combined;
-
-  combined = perror_string (string);
-  warning (_("%s"), combined);
-  xfree (combined);
+  std::string combined = perror_string (string);
+  warning (_("%s"), combined.c_str ());
 }
 
 /* Print the system error message for ERRCODE, and also mention STRING