Bug 108424: Debugger stops on removed breakpoints.
diff --git a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog
index a070e3d..1cfae81 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/ChangeLog
+++ b/debug/org.eclipse.cdt.debug.mi.core/ChangeLog
@@ -1,3 +1,7 @@
+2005-08-31 Mikhail Khodjaiants
+	Bug 108424: Debugger stops on removed breakpoints.
+	* cdi/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
+
 2005-08-04 Alain Magloire
 	Fix for 92446
 	* cdi/org/eclipse/cdt/debug/mi/core/cdi/VariableManager.java
diff --git a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
index ba16379..57d3fbd 100644
--- a/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
+++ b/debug/org.eclipse.cdt.debug.mi.core/cdi/org/eclipse/cdt/debug/mi/core/cdi/BreakpointManager.java
@@ -490,13 +490,14 @@
 
 	public void deleteBreakpoints(Target target, ICDIBreakpoint[] breakpoints) throws CDIException {
 		List bList = (List)breakMap.get(target);
+		List dList = (List)deferredMap.get(target);
 
 		// Do the sanity check first, we will accept all or none
 		if (bList == null) {
 			throw new CDIException(CdiResources.getString("cdi.BreakpointManager.Not_a_CDT_breakpoint")); //$NON-NLS-1$			
 		}
 		for (int i = 0; i < breakpoints.length; i++) {
-			if (!(breakpoints[i] instanceof Breakpoint && bList.contains(breakpoints[i]))) {
+			if (!(breakpoints[i] instanceof Breakpoint && (bList.contains(breakpoints[i]) || (dList != null && dList.contains(breakpoints[i]))))) {
 				throw new CDIException(CdiResources.getString("cdi.BreakpointManager.Not_a_CDT_breakpoint")); //$NON-NLS-1$			
 			}
 		}
@@ -504,10 +505,12 @@
 		MISession miSession = target.getMISession();
 		List eventList = new ArrayList(breakpoints.length);
 		for (int i = 0; i < breakpoints.length; i++) {
-			MIBreakpoint[] miBreakpoints = ((Breakpoint)breakpoints[i]).getMIBreakpoints();
-			if (miBreakpoints.length > 0) {
-				deleteMIBreakpoints(target, miBreakpoints);
-				eventList.add(new MIBreakpointDeletedEvent(miSession, miBreakpoints[0].getNumber()));
+			if (!(dList != null && dList.remove(breakpoints[i]))) {
+				MIBreakpoint[] miBreakpoints = ((Breakpoint)breakpoints[i]).getMIBreakpoints();
+				if (miBreakpoints.length > 0) {
+					deleteMIBreakpoints(target, miBreakpoints);
+					eventList.add(new MIBreakpointDeletedEvent(miSession, miBreakpoints[0].getNumber()));
+				}
 			}
 		}
 		MIEvent[] events = (MIEvent[])eventList.toArray(new MIEvent[0]);