]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
2003-09-12 Jeff Johnston <jjohnstn@redhat.com>
authorJeff Johnston <jjohnstn@redhat.com>
Fri, 12 Sep 2003 15:37:03 +0000 (15:37 +0000)
committerJeff Johnston <jjohnstn@redhat.com>
Fri, 12 Sep 2003 15:37:03 +0000 (15:37 +0000)
        * top.c (quit_target): New static helper function.
        (quit_force): Moved code to quit_target().  Call quit_target()
        via catch_errors() to catch errors during quit.

gdb/ChangeLog
gdb/top.c

index ea86ab5f52be066d891d50678984a4a9d166ab35..236bcdf9bf681bc72c834c2733a4fa815b861483 100644 (file)
@@ -1,3 +1,9 @@
+2003-09-12  Jeff Johnston  <jjohnstn@redhat.com>
+
+        * top.c (quit_target): New static helper function.
+        (quit_force): Moved code to quit_target().  Call quit_target()
+        via catch_errors() to catch errors during quit.
+
 2003-09-11  Daniel Jacobowitz  <drow@mvista.com>
 
        * dwarf2loc.c (dwarf2_loc_desc_needs_frame): Variables in a
index 3efebecb3eca90ccf11b4a1b1334ad5025aeae66..b174b33f36219d01191811494f47d45616149f7b 100644 (file)
--- a/gdb/top.c
+++ b/gdb/top.c
@@ -1693,28 +1693,25 @@ quit_confirm (void)
   return 1;
 }
 
-/* Quit without asking for confirmation.  */
+/* Helper routine for quit_force that requires error handling.  */
 
-void
-quit_force (char *args, int from_tty)
+struct qt_args
 {
-  int exit_code = 0;
-
-  /* An optional expression may be used to cause gdb to terminate with the 
-     value of that expression. */
-  if (args)
-    {
-      struct value *val = parse_and_eval (args);
+  char *args;
+  int from_tty;
+};
 
-      exit_code = (int) value_as_long (val);
-    }
+static int
+quit_target (void *arg)
+{
+  struct qt_args *qt = (struct qt_args *)arg;
 
   if (! ptid_equal (inferior_ptid, null_ptid) && target_has_execution)
     {
       if (attach_flag)
-       target_detach (args, from_tty);
+        target_detach (qt->args, qt->from_tty);
       else
-       target_kill ();
+        target_kill ();
     }
 
   /* UDI wants this, to kill the TIP.  */
@@ -1726,6 +1723,29 @@ quit_force (char *args, int from_tty)
 
   do_final_cleanups (ALL_CLEANUPS);    /* Do any final cleanups before exiting */
 
+  return 0;
+}
+
+/* Quit without asking for confirmation.  */
+
+void
+quit_force (char *args, int from_tty)
+{
+  int exit_code = 0;
+
+  /* An optional expression may be used to cause gdb to terminate with the 
+     value of that expression. */
+  if (args)
+    {
+      struct value *val = parse_and_eval (args);
+
+      exit_code = (int) value_as_long (val);
+    }
+
+  /* We want to handle any quit errors and exit regardless.  */
+  catch_errors (quit_target, args,
+               "Quitting: ", RETURN_MASK_ALL);
+
   exit (exit_code);
 }