diff --git a/jadx-core/src/main/java/jadx/core/utils/BlockUtils.java b/jadx-core/src/main/java/jadx/core/utils/BlockUtils.java index 4091ad2b2..1715c11a6 100644 --- a/jadx-core/src/main/java/jadx/core/utils/BlockUtils.java +++ b/jadx-core/src/main/java/jadx/core/utils/BlockUtils.java @@ -709,6 +709,7 @@ public class BlockUtils { return oneBlock; } BitSet combinedDF = newBlocksBitSet(mth); + int k = mth.getBasicBlocks().size(); while (true) { // collect dom frontier blocks from current set until only one block left forEachBlockFromBitSet(mth, domFrontBS, block -> { @@ -726,6 +727,10 @@ public class BlockUtils { if (cardinality == 0) { return null; } + if (k-- < 0) { + mth.addWarnComment("Path cross not found for " + blocks + ", limit reached: " + mth.getBasicBlocks().size()); + return null; + } // replace domFrontBS with combinedDF domFrontBS.clear(); domFrontBS.or(combinedDF);