From e85e4c8e6e7d2bd493c9a26beafeb8c54e13af3f Mon Sep 17 00:00:00 2001 From: Stiver Date: Mon, 16 Feb 2015 08:23:02 +0100 Subject: [PATCH] Fixed 'IDEA-132625: IDEA hangs when decompiling a class' --- .../decompose/FastExtendedPostdominanceHelper.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/decompose/FastExtendedPostdominanceHelper.java b/src/org/jetbrains/java/decompiler/modules/decompiler/decompose/FastExtendedPostdominanceHelper.java index f029016..d7eeb56 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/decompose/FastExtendedPostdominanceHelper.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/decompose/FastExtendedPostdominanceHelper.java @@ -89,6 +89,7 @@ public class FastExtendedPostdominanceHelper { stackPath.add(factory.spawnEmptySet()); Set setVisited = new HashSet(); + Set setStack = new HashSet(); while (!stack.isEmpty()) { @@ -122,9 +123,15 @@ public class FastExtendedPostdominanceHelper { } for (StatEdge edge : stat.getSuccessorEdges(StatEdge.TYPE_REGULAR)) { - if (!setVisited.contains(edge.getDestination())) { - stack.add(edge.getDestination()); + + Statement edge_destination = edge.getDestination(); + + if(!setVisited.contains(edge_destination) && !setStack.contains(edge_destination)) { + + stack.add(edge_destination); stackPath.add(path.getCopy()); + + setStack.add(edge_destination); } } }