From de5c1809ac36bd21ff937d3eea7aff6195b9524f Mon Sep 17 00:00:00 2001 From: Pawel Piech Date: Thu, 13 Nov 2008 19:06:25 +0000 Subject: [PATCH] [246735] - [breakpoints] Selecting the breakpoint filter option hangs eclipse --- .../dd/mi/service/MIBreakpointsManager.java | 37 ++++++++++--------- 1 file changed, 19 insertions(+), 18 deletions(-) diff --git a/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/MIBreakpointsManager.java b/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/MIBreakpointsManager.java index cc5838b3180..eaf97abe6a4 100644 --- a/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/MIBreakpointsManager.java +++ b/plugins/org.eclipse.dd.mi/src/org/eclipse/dd/mi/service/MIBreakpointsManager.java @@ -1504,8 +1504,7 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo private Set extractThreads(IBreakpointsTargetDMContext context, ICBreakpoint breakpoint) { // Find the ancestor - IContainerDMContext targetContext = DMContexts.getAncestorOfType(context, IContainerDMContext.class); - IExecutionDMContext[] threads = null; + List threads = new ArrayList(1); try { // Retrieve the targets @@ -1513,31 +1512,33 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo IContainerDMContext[] targets = filterExtension.getTargetFilters(); // If no target is present, plant one... - if (targets.length == 0) { - for (IBreakpointsTargetDMContext dmc : fPlatformBPs.keySet()) { - IContainerDMContext ctx = DMContexts.getAncestorOfType(dmc, IContainerDMContext.class); - if (ctx == targetContext) { - filterExtension.setTargetFilter(ctx); - targets = filterExtension.getTargetFilters(); - } - } - } +// if (targets.length == 0) { +// for (IBreakpointsTargetDMContext dmc : fPlatformBPs.keySet()) { +// IContainerDMContext ctx = DMContexts.getAncestorOfType(dmc, IContainerDMContext.class); +// if (ctx == targetContext) { +// filterExtension.setTargetFilter(ctx); +// targets = filterExtension.getTargetFilters(); +// } +// } +// } // Extract the thread IDs (if there is none, we are covered) for (IContainerDMContext ctxt : targets) { - if (ctxt == targetContext) { - threads = filterExtension.getThreadFilters(ctxt); + if (DMContexts.isAncestorOf(ctxt, context)) { + threads.add(filterExtension.getThreadFilters(ctxt)); } } } catch (CoreException e1) { } Set results = new HashSet(); - if ((threads != null) && (supportsThreads(breakpoint))) { - for (IExecutionDMContext thread : threads) { - if (thread instanceof IMIExecutionDMContext) { - IMIExecutionDMContext dmc = (IMIExecutionDMContext) thread; - results.add(((Integer) dmc.getThreadId()).toString()); + if (supportsThreads(breakpoint)) { + for (IExecutionDMContext[] targetThreads : threads) { + for (IExecutionDMContext thread : targetThreads) { + if (thread instanceof IMIExecutionDMContext) { + IMIExecutionDMContext dmc = (IMIExecutionDMContext) thread; + results.add(((Integer) dmc.getThreadId()).toString()); + } } } } else {