diff --git a/jode/jode/decompiler/CodeAnalyzer.java b/jode/jode/decompiler/CodeAnalyzer.java index 46f220e..dd8b92f 100644 --- a/jode/jode/decompiler/CodeAnalyzer.java +++ b/jode/jode/decompiler/CodeAnalyzer.java @@ -186,8 +186,6 @@ public class CodeAnalyzer implements Analyzer { excHandlers.analyze(); methodHeader.analyze(); - if (!Decompiler.usePUSH && methodHeader.mapStackToLocal()) - methodHeader.removePush(); } public void analyze() @@ -195,6 +193,9 @@ public class CodeAnalyzer implements Analyzer { byte[] codeArray = code.getCode(); int[] handlers = code.getExceptionHandlers(); readCode(codeArray, handlers); + if (!Decompiler.usePUSH && methodHeader.mapStackToLocal()) + methodHeader.removePush(); + Enumeration enum = allLocals.elements(); while (enum.hasMoreElements()) { LocalInfo li = (LocalInfo)enum.nextElement(); diff --git a/jode/jode/flow/CreateClassField.java b/jode/jode/flow/CreateClassField.java index dab7b27..56de6c8 100644 --- a/jode/jode/flow/CreateClassField.java +++ b/jode/jode/flow/CreateClassField.java @@ -57,7 +57,7 @@ public class CreateClassField { ComplexExpression ass = (ComplexExpression) instr; PutFieldOperator put = (PutFieldOperator) ass.getOperator(); - if (!put.isSynthetic() + if (!put.getField().isSynthetic() || !put.matches((GetFieldOperator)cmp.getSubExpressions()[0]) || !(ass.getSubExpressions()[0] instanceof ComplexExpression) || !(ass.getSubExpressions()[0].getOperator()