summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/cuchaz/enigma/bytecode/InnerClassWriter.java11
1 files changed, 10 insertions, 1 deletions
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;
16import com.google.common.collect.Lists; 16import com.google.common.collect.Lists;
17 17
18import javassist.CtClass; 18import javassist.CtClass;
19import javassist.bytecode.AccessFlag;
19import javassist.bytecode.ConstPool; 20import javassist.bytecode.ConstPool;
20import javassist.bytecode.EnclosingMethodAttribute; 21import javassist.bytecode.EnclosingMethodAttribute;
21import javassist.bytecode.InnerClassesAttribute; 22import javassist.bytecode.InnerClassesAttribute;
@@ -34,6 +35,13 @@ public class InnerClassWriter {
34 35
35 public void write(CtClass c) { 36 public void write(CtClass c) {
36 37
38 // don't change anything if there's already an attribute there
39 InnerClassesAttribute oldAttr = (InnerClassesAttribute)c.getClassFile().getAttribute(InnerClassesAttribute.tag);
40 if (oldAttr != null) {
41 // bail!
42 return;
43 }
44
37 ClassEntry obfClassEntry = EntryFactory.getClassEntry(c); 45 ClassEntry obfClassEntry = EntryFactory.getClassEntry(c);
38 List<ClassEntry> obfClassChain = m_index.getObfClassChain(obfClassEntry); 46 List<ClassEntry> obfClassChain = m_index.getObfClassChain(obfClassEntry);
39 47
@@ -102,7 +110,8 @@ public class InnerClassWriter {
102 int innerClassIndex = constPool.addClassInfo(obfInnerClassEntry.getName()); 110 int innerClassIndex = constPool.addClassInfo(obfInnerClassEntry.getName());
103 int parentClassIndex = constPool.addClassInfo(obfOuterClassEntry.getName()); 111 int parentClassIndex = constPool.addClassInfo(obfOuterClassEntry.getName());
104 int innerClassNameIndex = 0; 112 int innerClassNameIndex = 0;
105 int accessFlags = 0; 113 int accessFlags = AccessFlag.PUBLIC;
114 // TODO: need to figure out if we can put static or not
106 if (!m_index.isAnonymousClass(obfClassEntry)) { 115 if (!m_index.isAnonymousClass(obfClassEntry)) {
107 innerClassNameIndex = constPool.addUtf8Info(obfInnerClassEntry.getInnermostClassName()); 116 innerClassNameIndex = constPool.addUtf8Info(obfInnerClassEntry.getInnermostClassName());
108 } 117 }