bugfix: have to check known sub classes when determining conflict free hood

git-svn-id: https://svn.code.sf.net/p/jode/code/trunk@336 379699f6-c40d-0410-875b-85095c16579e
stable
jochen 26 years ago
parent 01ae20ed62
commit cb5ea77fb4
  1. 25
      jode/jode/obfuscator/ClassIdentifier.java

@ -465,7 +465,20 @@ public class ClassIdentifier extends Identifier {
return false; return false;
} }
public boolean containsFieldAliasDirectly(String fieldName,
String typeSig) {
for (int i=0; i < fieldCount; i++) {
if ((!Obfuscator.shouldStrip || identifiers[i].isReachable())
&& identifiers[i].getAlias().equals(fieldName)
&& identifiers[i].getType().startsWith(typeSig))
return true;
}
return false;
}
public boolean containFieldAlias(String fieldName, String typeSig) { public boolean containFieldAlias(String fieldName, String typeSig) {
if (containsFieldAliasDirectly(fieldName,typeSig))
return true;
for (int i=0; i < fieldCount; i++) { for (int i=0; i < fieldCount; i++) {
if ((!Obfuscator.shouldStrip || identifiers[i].isReachable()) if ((!Obfuscator.shouldStrip || identifiers[i].isReachable())
&& identifiers[i].getAlias().equals(fieldName) && identifiers[i].getAlias().equals(fieldName)
@ -527,6 +540,16 @@ public class ClassIdentifier extends Identifier {
return null; return null;
} }
public boolean hasMethod(String methodName, String paramType) {
for (int i=fieldCount; i< identifiers.length; i++) {
if ((!Obfuscator.shouldStrip || identifiers[i].isReachable())
&& identifiers[i].getAlias().equals(methodName)
&& identifiers[i].getType().startsWith(paramType))
return true;
}
return false;
}
public Object getMethod(String methodName, String paramType) { public Object getMethod(String methodName, String paramType) {
for (int i=fieldCount; i< identifiers.length; i++) { for (int i=fieldCount; i< identifiers.length; i++) {
if ((!Obfuscator.shouldStrip || identifiers[i].isReachable()) if ((!Obfuscator.shouldStrip || identifiers[i].isReachable())
@ -534,7 +557,6 @@ public class ClassIdentifier extends Identifier {
&& identifiers[i].getType().startsWith(paramType)) && identifiers[i].getType().startsWith(paramType))
return identifiers[i]; return identifiers[i];
} }
ClassInfo[] ifaces = info.getInterfaces(); ClassInfo[] ifaces = info.getInterfaces();
for (int i=0; i < ifaces.length; i++) { for (int i=0; i < ifaces.length; i++) {
ClassIdentifier ifaceident = (ClassIdentifier) ClassIdentifier ifaceident = (ClassIdentifier)
@ -571,4 +593,3 @@ public class ClassIdentifier extends Identifier {
return pack.contains(newAlias); return pack.contains(newAlias);
} }
} }

Loading…
Cancel
Save