diff options
Diffstat (limited to 'org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java')
-rw-r--r-- | org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java index c738aaa3a..6b3ed75bb 100644 --- a/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java +++ b/org.eclipse.debug.core/core/org/eclipse/debug/internal/core/BreakpointManager.java @@ -1421,22 +1421,24 @@ public class BreakpointManager implements IBreakpointManager, IResourceChangeLis } @Override - public synchronized void enableTriggerPoints(IBreakpoint[] triggerPoints, boolean enable) { + public void enableTriggerPoints(IBreakpoint[] triggerPoints, boolean enable) { IBreakpoint[] triggerPointArray = triggerPoints; if (triggerPoints == null) { if (enable) { - triggerPointArray = fTriggerPointDisabledList.toArray(new IBreakpoint[0]); + synchronized (fTriggerPointDisabledList) { + triggerPointArray = fTriggerPointDisabledList.toArray(new IBreakpoint[0]); + } } else { triggerPointArray = getTriggerPoints(); - fTriggerPointDisabledList.clear(); } } + List<IBreakpoint> toDisable = new ArrayList<>(); for (IBreakpoint iBreakpoint : triggerPointArray) { try { IMarker m = iBreakpoint.getMarker(); if (m != null && m.exists()) { if (!enable && iBreakpoint.isEnabled()) { - fTriggerPointDisabledList.add(iBreakpoint); + toDisable.add(iBreakpoint); } iBreakpoint.setEnabled(enable); } @@ -1444,8 +1446,11 @@ public class BreakpointManager implements IBreakpointManager, IResourceChangeLis // ignore } } - if (enable) { + synchronized (fTriggerPointDisabledList) { fTriggerPointDisabledList.clear(); + if (!enable) { + fTriggerPointDisabledList.addAll(toDisable); + } } } |