thread.c: cleanup breakpoint deletion
authorPedro Alves <palves@redhat.com>
Wed, 15 Oct 2014 19:18:32 +0000 (20:18 +0100)
committerPedro Alves <palves@redhat.com>
Wed, 15 Oct 2014 19:18:32 +0000 (20:18 +0100)
A little refactoring to reduce duplicate code.

gdb/
2014-10-15  Pedro Alves  <palves@redhat.com>

* thread.c (delete_thread_breakpoint): New function.
(delete_step_resume_breakpoint)
(delete_exception_resume_breakpoint): Use it.
(delete_at_next_stop): New function.
(clear_thread_inferior_resources): Use delete_at_next_stop.

gdb/ChangeLog
gdb/thread.c

index 98f76514cce8e08d7b1f05e109617a5b17f05ba8..e7108abfcc9f8983a4bcbfe735ea4e4c847d0064 100644 (file)
@@ -1,3 +1,11 @@
+2014-10-15  Pedro Alves  <palves@redhat.com>
+
+       * thread.c (delete_thread_breakpoint): New function.
+       (delete_step_resume_breakpoint)
+       (delete_exception_resume_breakpoint): Use it.
+       (delete_at_next_stop): New function.
+       (clear_thread_inferior_resources): Use delete_at_next_stop.
+
 2014-10-15  Pedro Alves  <palves@redhat.com>
 
        * breakpoint.c (regular_breakpoint_inserted_here_p): Inline ...
index 25538d7d43816c027ee5a5559a45ee6d652458d5..82c67607bd3b38fdf2c481f1b5e053a54cb7634b 100644 (file)
@@ -91,23 +91,42 @@ inferior_thread (void)
   return tp;
 }
 
-void
-delete_step_resume_breakpoint (struct thread_info *tp)
+/* Delete the breakpoint pointed at by BP_P, if there's one.  */
+
+static void
+delete_thread_breakpoint (struct breakpoint **bp_p)
 {
-  if (tp && tp->control.step_resume_breakpoint)
+  if (*bp_p != NULL)
     {
-      delete_breakpoint (tp->control.step_resume_breakpoint);
-      tp->control.step_resume_breakpoint = NULL;
+      delete_breakpoint (*bp_p);
+      *bp_p = NULL;
     }
 }
 
+void
+delete_step_resume_breakpoint (struct thread_info *tp)
+{
+  if (tp != NULL)
+    delete_thread_breakpoint (&tp->control.step_resume_breakpoint);
+}
+
 void
 delete_exception_resume_breakpoint (struct thread_info *tp)
 {
-  if (tp && tp->control.exception_resume_breakpoint)
+  if (tp != NULL)
+    delete_thread_breakpoint (&tp->control.exception_resume_breakpoint);
+}
+
+/* Delete the breakpoint pointed at by BP_P at the next stop, if
+   there's one.  */
+
+static void
+delete_at_next_stop (struct breakpoint **bp)
+{
+  if (*bp != NULL)
     {
-      delete_breakpoint (tp->control.exception_resume_breakpoint);
-      tp->control.exception_resume_breakpoint = NULL;
+      (*bp)->disposition = disp_del_at_next_stop;
+      *bp = NULL;
     }
 }
 
@@ -118,18 +137,8 @@ clear_thread_inferior_resources (struct thread_info *tp)
      but not any user-specified thread-specific breakpoints.  We can not
      delete the breakpoint straight-off, because the inferior might not
      be stopped at the moment.  */
-  if (tp->control.step_resume_breakpoint)
-    {
-      tp->control.step_resume_breakpoint->disposition = disp_del_at_next_stop;
-      tp->control.step_resume_breakpoint = NULL;
-    }
-
-  if (tp->control.exception_resume_breakpoint)
-    {
-      tp->control.exception_resume_breakpoint->disposition
-       = disp_del_at_next_stop;
-      tp->control.exception_resume_breakpoint = NULL;
-    }
+  delete_at_next_stop (&tp->control.step_resume_breakpoint);
+  delete_at_next_stop (&tp->control.exception_resume_breakpoint);
 
   delete_longjmp_breakpoint_at_next_stop (tp->num);