From fda8f42dd0886ff4c7d9cf68711ddfe4888e743e Mon Sep 17 00:00:00 2001 From: LexManos Date: Mon, 15 Jun 2020 22:07:51 -0700 Subject: [PATCH] Fix local variables incorrectly merging. --- .../decompiler/modules/decompiler/StackVarsProcessor.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/org/jetbrains/java/decompiler/modules/decompiler/StackVarsProcessor.java b/src/org/jetbrains/java/decompiler/modules/decompiler/StackVarsProcessor.java index 1232e64..fd104e2 100644 --- a/src/org/jetbrains/java/decompiler/modules/decompiler/StackVarsProcessor.java +++ b/src/org/jetbrains/java/decompiler/modules/decompiler/StackVarsProcessor.java @@ -591,7 +591,7 @@ public class StackVarsProcessor { for (Entry> ent : mapVars.entrySet()) { FastSparseSet liveverset = mapLiveVars.get(ent.getKey()); - if (liveverset == null) { + if (liveverset == null || liveverset.isEmpty()) { return false; } @@ -600,13 +600,13 @@ public class StackVarsProcessor { domset.add(ssuversions.nodes.getWithKey(verpaar)); } - boolean isdom = false; + boolean isdom = true; for (Integer livever : liveverset) { VarVersionNode node = ssuversions.nodes.getWithKey(new VarVersionPair(ent.getKey().intValue(), livever.intValue())); - if (ssuversions.isDominatorSet(node, domset)) { - isdom = true; + if (!ssuversions.isDominatorSet(node, domset)) { + isdom = false; break; } }