diff --git a/jode/jode/obfuscator/ClassIdentifier.java b/jode/jode/obfuscator/ClassIdentifier.java index 09342ef..7725cdc 100644 --- a/jode/jode/obfuscator/ClassIdentifier.java +++ b/jode/jode/obfuscator/ClassIdentifier.java @@ -183,7 +183,6 @@ public class ClassIdentifier extends Identifier { public void analyze() { if (Obfuscator.isVerbose) Obfuscator.err.println("Reachable: "+this); - reachableIdentifier("", "()V", false); } public void initClass() { @@ -223,8 +222,14 @@ public class ClassIdentifier extends Identifier { for (int i=0; i< minfos.length; i++) { identifiers[fieldCount + i] = new MethodIdentifier(this, minfos[i]); - if (identifiers[i].getName().equals("")) - identifiers[i].setPreserved(); + if (identifiers[fieldCount + i].getName().equals("")) { + /* If there is a static initializer, it is automagically + * reachable (even if this class wouldn't be otherwise). + */ + identifiers[fieldCount + i].setPreserved(); + identifiers[fieldCount + i].setReachable(); + } else if (identifiers[fieldCount + i].getName().equals("")) + identifiers[fieldCount + i].setPreserved(); } ClassInfo[] ifaces = info.getInterfaces(); @@ -245,8 +250,6 @@ public class ClassIdentifier extends Identifier { } initSuperClasses(info.getSuperclass()); } - preserveIdentifier("", "()V"); - preserveIdentifier("", null); } public void buildTable(int renameRule) {