diff options
Diffstat (limited to 'codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/cfg/ControlFlowGraph.java')
-rw-r--r-- | codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/cfg/ControlFlowGraph.java | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/cfg/ControlFlowGraph.java b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/cfg/ControlFlowGraph.java index c6d7003038e..059c83f5a22 100644 --- a/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/cfg/ControlFlowGraph.java +++ b/codan/org.eclipse.cdt.codan.core/src/org/eclipse/cdt/codan/internal/core/cfg/ControlFlowGraph.java @@ -142,10 +142,14 @@ public class ControlFlowGraph implements IControlFlowGraph { if (result.contains(start)) return; result.add(start); - IBasicBlock[] outgoingNodes = start.getOutgoingNodes(); - for (int i = 0; i < outgoingNodes.length; i++) { - IBasicBlock b = outgoingNodes[i]; - getNodes(b, result); + for (IBasicBlock bb : start.getOutgoingNodes()) { + getNodes(bb, result); + } + if (start instanceof IConnectorNode) { + // special case where connect can have some incoming branch nodes not in the graph + for (IBasicBlock bb : start.getIncomingNodes()) { + getNodes(bb, result); + } } } } |