From 106cb7a2a2e980d596dcfaa5d331ae8b933b6f48 Mon Sep 17 00:00:00 2001 From: Cuchaz Date: Mon, 23 Mar 2015 16:26:11 -0400 Subject: skip writing InnerClasses attribute if there's already one there just translate the existing one --- src/cuchaz/enigma/bytecode/InnerClassWriter.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src/cuchaz') diff --git a/src/cuchaz/enigma/bytecode/InnerClassWriter.java b/src/cuchaz/enigma/bytecode/InnerClassWriter.java index 0c11b71..9cdfd68 100644 --- a/src/cuchaz/enigma/bytecode/InnerClassWriter.java +++ b/src/cuchaz/enigma/bytecode/InnerClassWriter.java @@ -16,6 +16,7 @@ import java.util.List; import com.google.common.collect.Lists; import javassist.CtClass; +import javassist.bytecode.AccessFlag; import javassist.bytecode.ConstPool; import javassist.bytecode.EnclosingMethodAttribute; import javassist.bytecode.InnerClassesAttribute; @@ -34,6 +35,13 @@ public class InnerClassWriter { public void write(CtClass c) { + // don't change anything if there's already an attribute there + InnerClassesAttribute oldAttr = (InnerClassesAttribute)c.getClassFile().getAttribute(InnerClassesAttribute.tag); + if (oldAttr != null) { + // bail! + return; + } + ClassEntry obfClassEntry = EntryFactory.getClassEntry(c); List obfClassChain = m_index.getObfClassChain(obfClassEntry); @@ -102,7 +110,8 @@ public class InnerClassWriter { int innerClassIndex = constPool.addClassInfo(obfInnerClassEntry.getName()); int parentClassIndex = constPool.addClassInfo(obfOuterClassEntry.getName()); int innerClassNameIndex = 0; - int accessFlags = 0; + int accessFlags = AccessFlag.PUBLIC; + // TODO: need to figure out if we can put static or not if (!m_index.isAnonymousClass(obfClassEntry)) { innerClassNameIndex = constPool.addUtf8Info(obfInnerClassEntry.getInnermostClassName()); } -- cgit v1.2.3