diff options
Diffstat (limited to 'src/main/java/cuchaz')
4 files changed, 10 insertions, 13 deletions
diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java index 6bbfd07..bdd8873 100644 --- a/src/main/java/cuchaz/enigma/Deobfuscator.java +++ b/src/main/java/cuchaz/enigma/Deobfuscator.java | |||
| @@ -46,7 +46,6 @@ import java.util.jar.JarOutputStream; | |||
| 46 | public class Deobfuscator { | 46 | public class Deobfuscator { |
| 47 | 47 | ||
| 48 | private final ReferencedEntryPool entryPool = new ReferencedEntryPool(); | 48 | private final ReferencedEntryPool entryPool = new ReferencedEntryPool(); |
| 49 | private final JarFile jar; | ||
| 50 | private final ParsedJar parsedJar; | 49 | private final ParsedJar parsedJar; |
| 51 | private final DecompilerSettings settings; | 50 | private final DecompilerSettings settings; |
| 52 | private final JarIndex jarIndex; | 51 | private final JarIndex jarIndex; |
| @@ -54,9 +53,8 @@ public class Deobfuscator { | |||
| 54 | private final Map<TranslationDirection, Translator> translatorCache; | 53 | private final Map<TranslationDirection, Translator> translatorCache; |
| 55 | private Mappings mappings; | 54 | private Mappings mappings; |
| 56 | 55 | ||
| 57 | public Deobfuscator(JarFile jar) throws IOException { | 56 | public Deobfuscator(ParsedJar jar) { |
| 58 | this.jar = jar; | 57 | this.parsedJar = jar; |
| 59 | this.parsedJar = new ParsedJar(jar); | ||
| 60 | 58 | ||
| 61 | // build the jar index | 59 | // build the jar index |
| 62 | this.jarIndex = new JarIndex(entryPool); | 60 | this.jarIndex = new JarIndex(entryPool); |
| @@ -79,12 +77,12 @@ public class Deobfuscator { | |||
| 79 | setMappings(new Mappings()); | 77 | setMappings(new Mappings()); |
| 80 | } | 78 | } |
| 81 | 79 | ||
| 82 | public ParsedJar getJar() { | 80 | public Deobfuscator(JarFile jar) throws IOException { |
| 83 | return this.parsedJar; | 81 | this(new ParsedJar(jar)); |
| 84 | } | 82 | } |
| 85 | 83 | ||
| 86 | public String getJarName() { | 84 | public ParsedJar getJar() { |
| 87 | return this.jar.getName(); | 85 | return this.parsedJar; |
| 88 | } | 86 | } |
| 89 | 87 | ||
| 90 | public JarIndex getJarIndex() { | 88 | public JarIndex getJarIndex() { |
| @@ -388,7 +386,7 @@ public class Deobfuscator { | |||
| 388 | 386 | ||
| 389 | classMapping.markDirty(); | 387 | classMapping.markDirty(); |
| 390 | renameClassMap.put(classMapping, renameEntries); | 388 | renameClassMap.put(classMapping, renameEntries); |
| 391 | for(ClassMapping innerClass : classMapping.innerClasses()){ | 389 | for (ClassMapping innerClass : classMapping.innerClasses()) { |
| 392 | rebuildMethodNames(innerClass, renameClassMap); | 390 | rebuildMethodNames(innerClass, renameClassMap); |
| 393 | } | 391 | } |
| 394 | } | 392 | } |
diff --git a/src/main/java/cuchaz/enigma/analysis/JarIndex.java b/src/main/java/cuchaz/enigma/analysis/JarIndex.java index 87e6e88..8172dea 100644 --- a/src/main/java/cuchaz/enigma/analysis/JarIndex.java +++ b/src/main/java/cuchaz/enigma/analysis/JarIndex.java | |||
| @@ -148,8 +148,7 @@ public class JarIndex { | |||
| 148 | 148 | ||
| 149 | public void indexInnerClass(ClassEntry innerEntry, ClassEntry outerEntry) { | 149 | public void indexInnerClass(ClassEntry innerEntry, ClassEntry outerEntry) { |
| 150 | this.innerClassesByOuter.put(outerEntry, innerEntry); | 150 | this.innerClassesByOuter.put(outerEntry, innerEntry); |
| 151 | boolean innerWasAdded = this.outerClassesByInner.put(innerEntry, outerEntry) == null; | 151 | this.outerClassesByInner.putIfAbsent(innerEntry, outerEntry); |
| 152 | assert (innerWasAdded); | ||
| 153 | } | 152 | } |
| 154 | 153 | ||
| 155 | private MethodEntry findBridgedMethod(MethodDefEntry method) { | 154 | private MethodEntry findBridgedMethod(MethodDefEntry method) { |
diff --git a/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java b/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java index 644a3f2..b2ddc5f 100644 --- a/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java +++ b/src/main/java/cuchaz/enigma/analysis/TranslationIndex.java | |||
| @@ -84,7 +84,7 @@ public class TranslationIndex { | |||
| 84 | 84 | ||
| 85 | // add the superclass | 85 | // add the superclass |
| 86 | ClassEntry superclassEntry = entryPool.getClass(superName); | 86 | ClassEntry superclassEntry = entryPool.getClass(superName); |
| 87 | if (!isJre(superclassEntry)) { | 87 | if (superclassEntry != null) { |
| 88 | this.superclasses.put(classEntry, superclassEntry); | 88 | this.superclasses.put(classEntry, superclassEntry); |
| 89 | } | 89 | } |
| 90 | 90 | ||
diff --git a/src/main/java/cuchaz/enigma/gui/GuiController.java b/src/main/java/cuchaz/enigma/gui/GuiController.java index 837cff2..ae1b652 100644 --- a/src/main/java/cuchaz/enigma/gui/GuiController.java +++ b/src/main/java/cuchaz/enigma/gui/GuiController.java | |||
| @@ -58,7 +58,7 @@ public class GuiController { | |||
| 58 | public void openJar(final JarFile jar) throws IOException { | 58 | public void openJar(final JarFile jar) throws IOException { |
| 59 | this.gui.onStartOpenJar(); | 59 | this.gui.onStartOpenJar(); |
| 60 | this.deobfuscator = new Deobfuscator(jar); | 60 | this.deobfuscator = new Deobfuscator(jar); |
| 61 | this.gui.onFinishOpenJar(this.deobfuscator.getJarName()); | 61 | this.gui.onFinishOpenJar(jar.getName()); |
| 62 | refreshClasses(); | 62 | refreshClasses(); |
| 63 | } | 63 | } |
| 64 | 64 | ||