[RFA,2/6] Remove cleanup from create_excep_cond_exprs
Commit Message
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(-)
@@ -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