Fix removing breakpoints.
authorRobert Sesek <rsesek@bluestatic.org>
Sat, 7 Dec 2019 21:47:59 +0000 (16:47 -0500)
committerRobert Sesek <rsesek@bluestatic.org>
Sat, 7 Dec 2019 21:47:59 +0000 (16:47 -0500)
Sometimes callers to -[BreakpointManager removeBreakpoint:] create a
temporary object to remove the breakpoint at a file/line. But that temp
object does not have the internal debugger ID.

Source/BreakpointManager.h
Source/BreakpointManager.m

index 8537c36cd3fa3b4473de97c13fffa84bf8ad3921..b28649615379ddcb4f221ed840d6ee9bdfbdd5e9 100644 (file)
@@ -29,6 +29,5 @@
 - (BOOL)hasBreakpoint:(Breakpoint*)bp;
 
 - (NSSet<NSNumber*>*)breakpointsForFile:(NSString*)file;
-- (BOOL)hasBreakpointAt:(NSUInteger)line inFile:(NSString*)file;
 
 @end
index bb535119cb839500771370942046929c0187ddce..2c133f6e75142faf1204b27bff6c6f3f5db4456b 100644 (file)
 
 - (Breakpoint*)removeBreakpoint:(Breakpoint*)bp
 {
-  if (![_breakpoints containsObject:bp])
+  // Use the -isEqual: test to find the object in |_breakpoints| that also has
+  // the debugger id and secure bookmark data.
+  NSUInteger idx = [_breakpoints indexOfObject:bp];
+  if (idx == NSNotFound)
     return nil;
 
+  bp = [_breakpoints objectAtIndex:idx];
+
   [self willChangeValueForKey:@"breakpoints"];
   [_breakpoints removeObject:bp];
   [self didChangeValueForKey:@"breakpoints"];
   return [_breakpoints containsObject:breakpoint];
 }
 
-/**
- * Checks to see if a given file has a breakpoint on a given line
- */
-- (BOOL)hasBreakpointAt:(NSUInteger)line inFile:(NSString*)file
-{
-  return [self hasBreakpoint:[Breakpoint breakpointAtLine:line inFile:file]];
-}
-
 #pragma mark Private
 
 /**