diff options
author | Tom Tromey <tom@tromey.com> | 2018-05-18 15:58:50 -0600 |
---|---|---|
committer | Tom Tromey <tom@tromey.com> | 2018-05-21 10:01:15 -0600 |
commit | bc18fbb575437dd10089ef4619e46c0b9a93097d (patch) | |
tree | 5c8e5faadb12df5d81e216e08f9b0fcb91e83191 /gdb/mi | |
parent | 790217f6736cc0f0a177a681ba1c7cc5f995cfe7 (diff) | |
download | gdb-bc18fbb575437dd10089ef4619e46c0b9a93097d.zip gdb-bc18fbb575437dd10089ef4619e46c0b9a93097d.tar.gz gdb-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.c | 18 |
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); |