From 42dfa8092d69531a65c32a4642e68a073490e94f Mon Sep 17 00:00:00 2001 From: jochen Date: Fri, 9 Apr 1999 08:09:13 +0000 Subject: [PATCH] clinit is always reachable, even if the class is not yet git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@541 379699f6-c40d-0410-875b-85095c16579e --- jode/jode/obfuscator/ClassIdentifier.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) 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) {