* infcmd.c (step_1_continuation): Always disable longjmp
authorVladimir Prus <vladimir@codesourcery.com>
Thu, 24 Apr 2008 11:43:14 +0000 (11:43 +0000)
committerVladimir Prus <vladimir@codesourcery.com>
Thu, 24 Apr 2008 11:43:14 +0000 (11:43 +0000)
        breakpoint if we're not going to do another step.

gdb/ChangeLog
gdb/infcmd.c

index 58c0454..936f9d1 100644 (file)
@@ -1,5 +1,10 @@
 2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>
 
+        * infcmd.c (step_1_continuation): Always disable longjmp
+        breakpoint if we're not going to do another step.
+
+2008-04-24  Vladimir Prus  <vladimir@codesourcery.com>
+
        exec_cleanup murder.
        * breakpoint.c (until_break_command_continuation): Add
        the 'error' parameter.  Directly delete the breakoint as
index 867dadf..bdbb9bf 100644 (file)
@@ -804,24 +804,25 @@ which has no line number information.\n"), name);
 static void
 step_1_continuation (struct continuation_arg *arg, int error_p)
 {
-  if (error_p)
-    disable_longjmp_breakpoint ();
-  else
-    {
-      int count;
-      int skip_subroutines;
-      int single_inst;
+  int count;
+  int skip_subroutines;
+  int single_inst;
       
-      skip_subroutines = arg->data.integer;
-      single_inst      = arg->next->data.integer;
-      count            = arg->next->next->data.integer;
-      
-      if (stop_step)
-       step_once (skip_subroutines, single_inst, count - 1);
-      else
-       if (!single_inst || skip_subroutines)
-         disable_longjmp_breakpoint ();
+  skip_subroutines = arg->data.integer;
+  single_inst      = arg->next->data.integer;
+  count            = arg->next->next->data.integer;
+
+  if (error_p || !step_multi || !stop_step)
+    {
+      /* We either hit an error, or stopped for some reason
+        that is not stepping, or there are no further steps
+        to make.  Cleanup.  */
+      if (!single_inst || skip_subroutines)
+       disable_longjmp_breakpoint ();
+      step_multi = 0;
     }
+  else
+    step_once (skip_subroutines, single_inst, count - 1);
 }
 
 /* Do just one step operation. If count >1 we will have to set up a