From 2ea0c243fd3ceed585a514dd487ce04866c8aede Mon Sep 17 00:00:00 2001 From: gegy1000 Date: Sun, 20 May 2018 12:41:44 +0200 Subject: Fix anonymous class generation --- src/main/java/cuchaz/enigma/Deobfuscator.java | 2 +- .../cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java | 6 +++++- .../enigma/bytecode/translators/TranslationMethodVisitor.java | 2 -- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/main/java/cuchaz/enigma/Deobfuscator.java b/src/main/java/cuchaz/enigma/Deobfuscator.java index cb03d45..cf5d061 100644 --- a/src/main/java/cuchaz/enigma/Deobfuscator.java +++ b/src/main/java/cuchaz/enigma/Deobfuscator.java @@ -284,7 +284,7 @@ public class Deobfuscator { // write the file File file = new File(dirOut, deobfClassEntry.getName().replace('.', '/') + ".java"); file.getParentFile().mkdirs(); - try (OutputStreamWriter out = new OutputStreamWriter(new FileOutputStream(file), Charsets.UTF_8)) { + try (OutputStreamWriter out = new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(file)), Charsets.UTF_8)) { out.write(source); } } catch (Throwable t) { diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java index 25d523f..b0d17b3 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java +++ b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationClassVisitor.java @@ -80,7 +80,11 @@ public class TranslationClassVisitor extends ClassVisitor { String childName = translatedName.substring(separatorIndex + 1); ClassEntry outerEntry = translator.getTranslatedClass(entryPool.getClass(parentName)); - super.visitInnerClass(translatedName, outerEntry.getName(), childName, translatedEntry.getAccess().getFlags()); + + // Anonymous classes do not specify an outer or inner name. As we do not translate from the given parameter, ignore if the input is null + String translatedOuterName = outerName != null ? outerEntry.getName() : null; + String translatedInnerName = innerName != null ? childName : null; + super.visitInnerClass(translatedName, translatedOuterName, translatedInnerName, translatedEntry.getAccess().getFlags()); } @Override diff --git a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java index 09c106d..f3f7c48 100644 --- a/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java +++ b/src/main/java/cuchaz/enigma/bytecode/translators/TranslationMethodVisitor.java @@ -108,8 +108,6 @@ public class TranslationMethodVisitor extends MethodVisitor { nameBuilder.append(nameIndex); } translatedName = nameBuilder.toString(); - } else { - System.out.println(); } super.visitLocalVariable(translatedName, translatedEntry.getDesc().toString(), translatedSignature, start, end, index); -- cgit v1.2.3