+2009-07-31 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * breakpoint.c (remove_breakpoints): If removing one breakpoint
+ location fails, still continue to remove other locations.
+ (remove_hw_watchpoints): Likewise.
+ (detach_breakpoints): Likewise.
+
2009-07-31 Ulrich Weigand <uweigand@de.ibm.com>
* breakpoint.h (enum enable_state): Add bp_startup_disabled.
remove_breakpoints (void)
{
struct bp_location *b;
- int val;
+ int val = 0;
ALL_BP_LOCATIONS (b)
{
if (b->inserted)
- {
- val = remove_breakpoint (b, mark_uninserted);
- if (val != 0)
- return val;
- }
+ val |= remove_breakpoint (b, mark_uninserted);
}
- return 0;
+ return val;
}
int
remove_hw_watchpoints (void)
{
struct bp_location *b;
- int val;
+ int val = 0;
ALL_BP_LOCATIONS (b)
{
if (b->inserted && b->loc_type == bp_loc_hardware_watchpoint)
- {
- val = remove_breakpoint (b, mark_uninserted);
- if (val != 0)
- return val;
- }
+ val |= remove_breakpoint (b, mark_uninserted);
}
- return 0;
+ return val;
}
int
detach_breakpoints (int pid)
{
struct bp_location *b;
- int val;
+ int val = 0;
struct cleanup *old_chain = save_inferior_ptid ();
if (pid == PIDGET (inferior_ptid))
ALL_BP_LOCATIONS (b)
{
if (b->inserted)
- {
- val = remove_breakpoint (b, mark_inserted);
- if (val != 0)
- {
- do_cleanups (old_chain);
- return val;
- }
- }
+ val |= remove_breakpoint (b, mark_inserted);
}
do_cleanups (old_chain);
- return 0;
+ return val;
}
static int