Make free_current_contents more robust. Use in MI.
authorAndrew Cagney <cagney@redhat.com>
Tue, 16 May 2000 04:57:49 +0000 (04:57 +0000)
committerAndrew Cagney <cagney@redhat.com>
Tue, 16 May 2000 04:57:49 +0000 (04:57 +0000)
gdb/ChangeLog
gdb/mi/ChangeLog-mi
gdb/mi/mi-main.c
gdb/utils.c

index aa37cd5386d23b500610af9f1a688e42087059bd..ff3747ed75abd52c7f276785a2dbce223b15486c 100644 (file)
@@ -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
index d2eafae4f3da904b6ac80084458dc7740eaefd85..5edfce47222e5a059b3d3e59c7bdf065612377f1 100644 (file)
@@ -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),
index 22745a076915ec4e3da315922e392686aa824240..872b7b20f2b8fd7b681d303f89f061a571abc018 100644 (file)
@@ -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)
 {
index 3fd055caad92a33a8e96b326b5aaf5fc1cc03c93..45fdb1dd47b8055dd5858fac1ee51e0ccade7802 100644 (file)
@@ -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