This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[RFA 2/6] Remove cleanup from create_excep_cond_exprs


This removes a cleanup from create_excep_cond_exprs by changing
ada_exception_catchpoint_cond_string to return a std::string.

ChangeLog
2017-11-29  Tom Tromey  <tom@tromey.com>

	* ada-lang.c (create_excep_cond_exprs): Update.
	(ada_exception_catchpoint_cond_string): Return std::string.
---
 gdb/ChangeLog  |  5 +++++
 gdb/ada-lang.c | 28 ++++++++++++----------------
 2 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
index d5dfa07b78..28df250104 100644
--- a/gdb/ada-lang.c
+++ b/gdb/ada-lang.c
@@ -12177,7 +12177,8 @@ ada_exception_name_addr (enum ada_exception_catchpoint_kind ex,
   return result;
 }
 
-static char *ada_exception_catchpoint_cond_string (const char *excep_string);
+static std::string ada_exception_catchpoint_cond_string
+    (const char *excep_string);
 
 /* Ada catchpoints.
 
@@ -12242,9 +12243,7 @@ struct ada_catchpoint : public breakpoint
 static void
 create_excep_cond_exprs (struct ada_catchpoint *c)
 {
-  struct cleanup *old_chain;
   struct bp_location *bl;
-  char *cond_string;
 
   /* Nothing to do if there's no specific exception to catch.  */
   if (c->excep_string == NULL)
@@ -12256,8 +12255,8 @@ create_excep_cond_exprs (struct ada_catchpoint *c)
 
   /* Compute the condition expression in text form, from the specific
      expection we want to catch.  */
-  cond_string = ada_exception_catchpoint_cond_string (c->excep_string);
-  old_chain = make_cleanup (xfree, cond_string);
+  std::string cond_string
+    = ada_exception_catchpoint_cond_string (c->excep_string);
 
   /* Iterate over all the catchpoint's locations, and parse an
      expression for each.  */
@@ -12271,7 +12270,7 @@ create_excep_cond_exprs (struct ada_catchpoint *c)
 	{
 	  const char *s;
 
-	  s = cond_string;
+	  s = cond_string.c_str ();
 	  TRY
 	    {
 	      exp = parse_exp_1 (&s, bl->address,
@@ -12289,8 +12288,6 @@ create_excep_cond_exprs (struct ada_catchpoint *c)
 
       ada_loc->excep_cond_expr = std::move (exp);
     }
-
-  do_cleanups (old_chain);
 }
 
 /* ada_catchpoint destructor.  */
@@ -12898,12 +12895,9 @@ ada_exception_breakpoint_ops (enum ada_exception_catchpoint_kind ex)
 /* Return the condition that will be used to match the current exception
    being raised with the exception that the user wants to catch.  This
    assumes that this condition is used when the inferior just triggered
-   an exception catchpoint.
-   
-   The string returned is a newly allocated string that needs to be
-   deallocated later.  */
+   an exception catchpoint.  */
 
-static char *
+static std::string
 ada_exception_catchpoint_cond_string (const char *excep_string)
 {
   int i;
@@ -12931,11 +12925,13 @@ ada_exception_catchpoint_cond_string (const char *excep_string)
     {
       if (strcmp (standard_exc [i], excep_string) == 0)
 	{
-          return xstrprintf ("long_integer (e) = long_integer (&standard.%s)",
-                             excep_string);
+          return
+	    string_printf ("long_integer (e) = long_integer (&standard.%s)",
+			   excep_string);
 	}
     }
-  return xstrprintf ("long_integer (e) = long_integer (&%s)", excep_string);
+  return string_printf ("long_integer (e) = long_integer (&%s)",
+			excep_string);
 }
 
 /* Return the symtab_and_line that should be used to insert an exception
-- 
2.13.6


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]