From 7d88f12b8a39aa6d6489109a03b32a4b7a995d9a Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Thu, 5 Jul 2018 12:33:05 +0200 Subject: Fix old mappings not properly being removed --- src/main/java/cuchaz/enigma/mapping/Mappings.java | 4 ++++ .../enigma/mapping/MappingsEnigmaWriter.java | 23 ++++++++++++---------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/main/java/cuchaz/enigma/mapping/Mappings.java b/src/main/java/cuchaz/enigma/mapping/Mappings.java index 79d9f10..307b1bd 100644 --- a/src/main/java/cuchaz/enigma/mapping/Mappings.java +++ b/src/main/java/cuchaz/enigma/mapping/Mappings.java @@ -47,6 +47,10 @@ public class Mappings { } public void addClassMapping(ClassMapping classMapping) throws MappingConflict { + if (classMapping.isObfuscated()) { + return; + } + if (this.classesByObf.containsKey(classMapping.getObfFullName())) { throw new MappingConflict("class", classMapping.getObfFullName(), this.classesByObf.get(classMapping.getObfFullName()).getObfFullName()); } diff --git a/src/main/java/cuchaz/enigma/mapping/MappingsEnigmaWriter.java b/src/main/java/cuchaz/enigma/mapping/MappingsEnigmaWriter.java index 231893d..1e1c4dd 100644 --- a/src/main/java/cuchaz/enigma/mapping/MappingsEnigmaWriter.java +++ b/src/main/java/cuchaz/enigma/mapping/MappingsEnigmaWriter.java @@ -39,11 +39,14 @@ public class MappingsEnigmaWriter { if (previousState != null) { ClassMapping previousClass = previousState.classesByObf.get(classMapping.getObfFullName()); + File previousFile; if (previousClass != null) { - File previousFile = new File(target, previousClass.getSaveName() + ".mapping"); - if (previousFile.exists() && !previousFile.delete()) { - System.err.println("Failed to delete old class mapping " + previousFile.getName()); - } + previousFile = new File(target, previousClass.getSaveName() + ".mapping"); + } else { + previousFile = new File(target, classMapping.getObfFullName() + ".mapping"); + } + if (previousFile.exists() && !previousFile.delete()) { + System.err.println("Failed to delete old class mapping " + previousFile.getName()); } } @@ -85,10 +88,10 @@ public class MappingsEnigmaWriter { private void write(PrintWriter out, ClassMapping classMapping, int depth) throws IOException { if (classMapping.getDeobfName() == null) { out.format("%sCLASS %s%s\n", getIndent(depth), classMapping.getObfFullName(), - classMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : classMapping.getModifier().getFormattedName()); + classMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : classMapping.getModifier().getFormattedName()); } else { out.format("%sCLASS %s %s%s\n", getIndent(depth), classMapping.getObfFullName(), classMapping.getDeobfName(), - classMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : classMapping.getModifier().getFormattedName()); + classMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : classMapping.getModifier().getFormattedName()); } for (ClassMapping innerClassMapping : sorted(classMapping.innerClasses())) { @@ -107,19 +110,19 @@ public class MappingsEnigmaWriter { private void write(PrintWriter out, FieldMapping fieldMapping, int depth) { if (fieldMapping.getDeobfName() == null) out.format("%sFIELD %s %s%s\n", getIndent(depth), fieldMapping.getObfName(), fieldMapping.getObfDesc().toString(), - fieldMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : fieldMapping.getModifier().getFormattedName()); + fieldMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : fieldMapping.getModifier().getFormattedName()); else out.format("%sFIELD %s %s %s%s\n", getIndent(depth), fieldMapping.getObfName(), fieldMapping.getDeobfName(), fieldMapping.getObfDesc().toString(), - fieldMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : fieldMapping.getModifier().getFormattedName()); + fieldMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : fieldMapping.getModifier().getFormattedName()); } private void write(PrintWriter out, MethodMapping methodMapping, int depth) throws IOException { if (methodMapping.isObfuscated()) { out.format("%sMETHOD %s %s%s\n", getIndent(depth), methodMapping.getObfName(), methodMapping.getObfDesc(), - methodMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : methodMapping.getModifier().getFormattedName()); + methodMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : methodMapping.getModifier().getFormattedName()); } else { out.format("%sMETHOD %s %s %s%s\n", getIndent(depth), methodMapping.getObfName(), methodMapping.getDeobfName(), methodMapping.getObfDesc(), - methodMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : methodMapping.getModifier().getFormattedName()); + methodMapping.getModifier() == Mappings.EntryModifier.UNCHANGED ? "" : methodMapping.getModifier().getFormattedName()); } for (LocalVariableMapping localVariableMapping : sorted(methodMapping.arguments())) { -- cgit v1.2.3