diff --git a/src/main/java/jadx/dex/visitors/regions/ProcessVariables.java b/src/main/java/jadx/dex/visitors/regions/ProcessVariables.java index 4c09efeb8..b14ecf530 100644 --- a/src/main/java/jadx/dex/visitors/regions/ProcessVariables.java +++ b/src/main/java/jadx/dex/visitors/regions/ProcessVariables.java @@ -114,12 +114,6 @@ public class ProcessVariables extends AbstractVisitor { continue; // } } - // suppose variables always initialized - if (u.getAssigns().size() == 1 && u.getUseRegions().size() <= 1) { - r.getParentInsn().getAttributes().add(new DeclareVariableAttr()); - it.remove(); - continue; - } // check if we can declare variable at current assigns for (IRegion assignRegion : u.getAssigns()) { if (canDeclareInRegion(u, assignRegion)) { diff --git a/src/samples/java/jadx/samples/TestTryCatch.java b/src/samples/java/jadx/samples/TestTryCatch.java index cef0ddd83..455cce7f1 100644 --- a/src/samples/java/jadx/samples/TestTryCatch.java +++ b/src/samples/java/jadx/samples/TestTryCatch.java @@ -131,6 +131,17 @@ public class TestTryCatch extends AbstractTest { return obj.toString() != null; } + public Object mObject = new Object(); + public boolean mDiscovering = true; + + private boolean testSynchronize3() { + boolean b = false; + synchronized (mObject) { + b = this.mDiscovering; + } + return b; + } + @Override public boolean testRun() throws Exception { Object obj = new Object(); @@ -147,6 +158,7 @@ public class TestTryCatch extends AbstractTest { assertTrue(testSynchronize("str") == false); assertTrue(testSynchronize2("str")); + assertTrue(testSynchronize3()); return true; }