diff options
author | Andrew Cagney <cagney@redhat.com> | 2000-05-16 04:57:49 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2000-05-16 04:57:49 +0000 |
commit | e2f9c4749114f7ddcd18e62e5559d0fa14bf0935 (patch) | |
tree | b03b48f1bbc38e03f1baab6f5a5575d2b8128caf | |
parent | 56e290f494ab802bbc5c26c445dad0d1e6a7f37b (diff) | |
download | gdb-e2f9c4749114f7ddcd18e62e5559d0fa14bf0935.zip gdb-e2f9c4749114f7ddcd18e62e5559d0fa14bf0935.tar.gz gdb-e2f9c4749114f7ddcd18e62e5559d0fa14bf0935.tar.bz2 |
Make free_current_contents more robust. Use in MI.
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/mi/ChangeLog-mi | 5 | ||||
-rw-r--r-- | gdb/mi/mi-main.c | 10 | ||||
-rw-r--r-- | gdb/utils.c | 7 |
4 files changed, 16 insertions, 10 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index aa37cd5..ff3747e 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +Tue May 16 14:17:20 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * utils.c (free_current_contents): Make more robust. + Tue May 16 13:30:08 2000 Andrew Cagney <cagney@b1.cygnus.com> * symtab.h (make_cleanup_discard_minimal_symbols): Replace diff --git a/gdb/mi/ChangeLog-mi b/gdb/mi/ChangeLog-mi index d2eafae..5edfce4 100644 --- a/gdb/mi/ChangeLog-mi +++ b/gdb/mi/ChangeLog-mi @@ -1,3 +1,8 @@ +Tue May 16 14:13:41 2000 Andrew Cagney <cagney@b1.cygnus.com> + + * mi-main.c (mi_cmd_execute): Use free_current_contents. + (free_and_reset): Delete. + Mon May 15 16:17:56 2000 Andrew Cagney <cagney@b1.cygnus.com> * mi-main.c (mi_cmd_data_assign, mi_cmd_data_evaluate_expression), diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index 22745a0..872b7b2 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -70,7 +70,6 @@ static enum mi_cmd_result mi_execute_async_cli_command (char *mi, char *args, in static void mi_execute_command_wrapper (char *cmd); void mi_exec_async_cli_cmd_continuation (struct continuation_arg *arg); -static void free_and_reset (char **arg); static int register_changed_p (int regnum); static int get_register (int regnum, int format); @@ -1199,7 +1198,7 @@ mi_cmd_execute (struct mi_parse *parse) } } last_async_command = xstrdup (parse->token); - make_exec_cleanup ((make_cleanup_func) free_and_reset, &last_async_command); + make_exec_cleanup (free_current_contents, &last_async_command); /* FIXME: DELETE THIS! */ if (parse->cmd->args_func != NULL) return parse->cmd->args_func (parse->args, 0 /*from_tty */ ); @@ -1226,13 +1225,6 @@ mi_cmd_execute (struct mi_parse *parse) } } -void -free_and_reset (char **arg) -{ - free (*arg); - *arg = NULL; -} - static void mi_execute_command_wrapper (char *cmd) { diff --git a/gdb/utils.c b/gdb/utils.c index 3fd055ca..45fdb1d 100644 --- a/gdb/utils.c +++ b/gdb/utils.c @@ -390,8 +390,13 @@ void free_current_contents (void *ptr) { void **location = ptr; + if (location == NULL) + internal_error ("free_current_contents: NULL pointer"); if (*location != NULL) - free (*location); + { + free (*location); + *location = NULL; + } } /* Provide a known function that does nothing, to use as a base for |