From 81adac1706ee5f96c97cc26874ebb0d6cbb56c7f Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sun, 24 Jun 2018 19:12:24 +0200 Subject: Fix handling of null deobf mappings --- .../java/cuchaz/enigma/mapping/ClassMapping.java | 6 ++-- .../enigma/mapping/MappingsEnigmaWriter.java | 2 +- .../java/cuchaz/enigma/mapping/MethodMapping.java | 7 +++++ .../enigma/mapping/entry/ProcyonEntryFactory.java | 32 +++------------------- 4 files changed, 15 insertions(+), 32 deletions(-) diff --git a/src/main/java/cuchaz/enigma/mapping/ClassMapping.java b/src/main/java/cuchaz/enigma/mapping/ClassMapping.java index e5133937..1e6c3a19 100644 --- a/src/main/java/cuchaz/enigma/mapping/ClassMapping.java +++ b/src/main/java/cuchaz/enigma/mapping/ClassMapping.java @@ -323,7 +323,7 @@ public class ClassMapping implements Comparable { } boolean wasAdded = methodsByObf.put(obfKey, methodMapping) == null; assert (wasAdded); - if (methodMapping.getDeobfName() != null) { + if (!methodMapping.isObfuscated()) { String deobfKey = getMethodKey(methodMapping.getDeobfName(), methodMapping.getObfDesc()); if (methodsByDeobf.containsKey(deobfKey)) { throw new Error("Already have mapping for " + deobfName + "." + deobfKey); @@ -338,7 +338,7 @@ public class ClassMapping implements Comparable { public void removeMethodMapping(MethodMapping methodMapping) { boolean obfWasRemoved = methodsByObf.remove(getMethodKey(methodMapping.getObfName(), methodMapping.getObfDesc())) != null; assert (obfWasRemoved); - if (methodMapping.getDeobfName() != null) { + if (!methodMapping.isObfuscated()) { boolean deobfWasRemoved = methodsByDeobf.remove(getMethodKey(methodMapping.getDeobfName(), methodMapping.getObfDesc())) != null; assert (deobfWasRemoved); } @@ -371,7 +371,7 @@ public class ClassMapping implements Comparable { MethodMapping methodMapping = methodsByObf.get(getMethodKey(obfName, obfDescriptor)); if (methodMapping == null) { methodMapping = createMethodMapping(obfName, obfDescriptor); - } else if (methodMapping.getDeobfName() != null) { + } else if (!methodMapping.isObfuscated()) { boolean wasRemoved = methodsByDeobf.remove(getMethodKey(methodMapping.getDeobfName(), methodMapping.getObfDesc())) != null; assert (wasRemoved); } diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsEnigmaWriter.java b/src/main/java/cuchaz/enigma/mapping/MappingsEnigmaWriter.java index 19299778..4e29a465 100644 --- a/src/main/java/cuchaz/enigma/mapping/MappingsEnigmaWriter.java +++ b/src/main/java/cuchaz/enigma/mapping/MappingsEnigmaWriter.java @@ -135,7 +135,7 @@ public class MappingsEnigmaWriter { } private void write(PrintWriter out, MethodMapping methodMapping, int depth) throws IOException { - if (methodMapping.getDeobfName() == null) { + if (methodMapping.isObfuscated()) { out.format("%sMETHOD %s %s%s\n", getIndent(depth), methodMapping.getObfName(), methodMapping.getObfDesc(), methodMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : methodMapping.getModifier().getFormattedName()); } else { diff --git a/src/main/java/cuchaz/enigma/mapping/MethodMapping.java b/src/main/java/cuchaz/enigma/mapping/MethodMapping.java index 363bab80..2f10144e 100644 --- a/src/main/java/cuchaz/enigma/mapping/MethodMapping.java +++ b/src/main/java/cuchaz/enigma/mapping/MethodMapping.java @@ -76,6 +76,9 @@ public class MethodMapping implements Comparable, MemberMapping, MemberMapping interfaces = ((CompoundTypeReference) paramType.getExtendsBound()).getInterfaces(); - interfaces.forEach((inter) -> builder.append(inter.getErasedSignature())); - } else - builder.append(paramType.getErasedSignature()); - } - builder.append(")"); - - TypeReference returnType = methodReference.getReturnType(); - if (returnType.getErasedSignature().equals("Ljava/lang/Object;") && returnType.hasExtendsBound() && returnType.getExtendsBound() instanceof CompoundTypeReference) { - List interfaces = ((CompoundTypeReference) returnType.getExtendsBound()).getInterfaces(); - interfaces.forEach((inter) -> builder.append(inter.getErasedSignature())); - } else - builder.append(returnType.getErasedSignature()); - return builder.toString(); - } - public FieldEntry getFieldEntry(MemberReference def) { ClassEntry classEntry = entryPool.getClass(def.getDeclaringType().getInternalName()); return entryPool.getField(classEntry, def.getName(), def.getErasedSignature()); @@ -62,7 +38,7 @@ public class ProcyonEntryFactory { public MethodEntry getMethodEntry(MemberReference def) { ClassEntry classEntry = entryPool.getClass(def.getDeclaringType().getInternalName()); - return entryPool.getMethod(classEntry, def.getName(), getErasedSignature(def)); + return entryPool.getMethod(classEntry, def.getName(), def.getErasedSignature()); } public MethodDefEntry getMethodDefEntry(MethodDefinition def) { -- cgit v1.2.3