aboutsummaryrefslogtreecommitdiff
path: root/gdb/mi
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2018-05-18 15:58:50 -0600
committerTom Tromey <tom@tromey.com>2018-05-21 10:01:15 -0600
commitbc18fbb575437dd10089ef4619e46c0b9a93097d (patch)
tree5c8e5faadb12df5d81e216e08f9b0fcb91e83191 /gdb/mi
parent790217f6736cc0f0a177a681ba1c7cc5f995cfe7 (diff)
downloadbinutils-bc18fbb575437dd10089ef4619e46c0b9a93097d.zip
binutils-bc18fbb575437dd10089ef4619e46c0b9a93097d.tar.gz
binutils-bc18fbb575437dd10089ef4619e46c0b9a93097d.tar.bz2
Change ada_catchpoint::excep_string to be a std::string
This changes ada_catchpoint::excep_string to be a std::string and then fixes up all t he users. This found a memory leak in catch_ada_exception_command_split, where "cond" was copied but never freed. I changed the type of the "cond_string" argument to catch_ada_exception_command_split to follow the rule that out parameters should be pointers and not references. This patch enables the removal of some cleanups and also the function ada_get_next_arg. ChangeLog 2018-05-21 Tom Tromey <tom@tromey.com> * mi/mi-cmd-catch.c (mi_cmd_catch_assert) (mi_cmd_catch_exception, mi_cmd_catch_handlers): Update. * ada-lang.h (create_ada_exception_catchpoint): Update. * ada-lang.c (struct ada_catchpoint) <excep_string>: Now a std::string. (create_excep_cond_exprs, ~ada_catchpoint) (should_stop_exception, print_one_exception) (print_mention_exception, print_recreate_exception): Update. (ada_get_next_arg): Remove. (catch_ada_exception_command_split): Use std::string. Change type of "excep_string", "cond_string". (catch_ada_exception_command): Update. (create_ada_exception_catchpoint): Change type of excep_string. (ada_exception_sal): Remove excep_string parameter. (~ada_catchpoint): Remove.
Diffstat (limited to 'gdb/mi')
-rw-r--r--gdb/mi/mi-cmd-catch.c18
1 files changed, 5 insertions, 13 deletions
diff --git a/gdb/mi/mi-cmd-catch.c b/gdb/mi/mi-cmd-catch.c
index 078e73a..77c9f95 100644
--- a/gdb/mi/mi-cmd-catch.c
+++ b/gdb/mi/mi-cmd-catch.c
@@ -79,8 +79,8 @@ mi_cmd_catch_assert (const char *cmd, char *argv[], int argc)
error (_("Invalid argument: %s"), argv[oind]);
scoped_restore restore_breakpoint_reporting = setup_breakpoint_reporting ();
- create_ada_exception_catchpoint (gdbarch, ada_catch_assert,
- NULL, condition, temp, enabled, 0);
+ create_ada_exception_catchpoint (gdbarch, ada_catch_assert, std::string (),
+ condition, temp, enabled, 0);
}
/* Handler for the -catch-exception command. */
@@ -91,7 +91,7 @@ mi_cmd_catch_exception (const char *cmd, char *argv[], int argc)
struct gdbarch *gdbarch = get_current_arch();
std::string condition;
int enabled = 1;
- char *exception_name = NULL;
+ std::string exception_name;
int temp = 0;
enum ada_exception_catchpoint_kind ex_kind = ada_catch_exception;
@@ -148,14 +148,10 @@ mi_cmd_catch_exception (const char *cmd, char *argv[], int argc)
/* Specifying an exception name does not make sense when requesting
an unhandled exception breakpoint. */
- if (ex_kind == ada_catch_exception_unhandled && exception_name != NULL)
+ if (ex_kind == ada_catch_exception_unhandled && !exception_name.empty ())
error (_("\"-e\" and \"-u\" are mutually exclusive"));
scoped_restore restore_breakpoint_reporting = setup_breakpoint_reporting ();
- /* create_ada_exception_catchpoint needs EXCEPTION_NAME to be
- xstrdup'ed, and will assume control of its lifetime. */
- if (exception_name != NULL)
- exception_name = xstrdup (exception_name);
create_ada_exception_catchpoint (gdbarch, ex_kind,
exception_name,
condition, temp, enabled, 0);
@@ -169,7 +165,7 @@ mi_cmd_catch_handlers (const char *cmd, char *argv[], int argc)
struct gdbarch *gdbarch = get_current_arch ();
std::string condition;
int enabled = 1;
- char *exception_name = NULL;
+ std::string exception_name;
int temp = 0;
int oind = 0;
@@ -220,10 +216,6 @@ mi_cmd_catch_handlers (const char *cmd, char *argv[], int argc)
scoped_restore restore_breakpoint_reporting
= setup_breakpoint_reporting ();
- /* create_ada_exception_catchpoint needs EXCEPTION_NAME to be
- xstrdup'ed, and will assume control of its lifetime. */
- if (exception_name != NULL)
- exception_name = xstrdup (exception_name);
create_ada_exception_catchpoint (gdbarch, ada_catch_handlers,
exception_name,
condition, temp, enabled, 0);