summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Thog2017-03-12 13:12:50 +0100
committerGravatar Thog2017-03-12 13:12:50 +0100
commit6de194e83d39c833d76edd7329d51dafac3e8f39 (patch)
treedee1dc25e7c1131821f258feecce1c733e61ffb4
parentFollow Fabric guidelines (diff)
downloadenigma-6de194e83d39c833d76edd7329d51dafac3e8f39.tar.gz
enigma-6de194e83d39c833d76edd7329d51dafac3e8f39.tar.xz
enigma-6de194e83d39c833d76edd7329d51dafac3e8f39.zip
Fix var naming and locals var index issues
-rw-r--r--src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java4
-rw-r--r--src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java2
-rw-r--r--src/main/java/cuchaz/enigma/mapping/Mappings.java1
3 files changed, 3 insertions, 4 deletions
diff --git a/src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java b/src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java
index 4febf256..68ca87e3 100644
--- a/src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java
+++ b/src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java
@@ -174,7 +174,7 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor {
174 TypeReference typeReference = type.getUserData(Keys.TYPE_REFERENCE); 174 TypeReference typeReference = type.getUserData(Keys.TYPE_REFERENCE);
175 Identifier identifier = node.getVariableNameToken(); 175 Identifier identifier = node.getVariableNameToken();
176 String signature = Descriptor.of(typeReference.getErasedDescription()); 176 String signature = Descriptor.of(typeReference.getErasedDescription());
177 LocalVariableEntry localVariableEntry = new LocalVariableEntry(behaviorEntry, localsPosition++, identifier.getName(), new Type(signature)); 177 LocalVariableEntry localVariableEntry = new LocalVariableEntry(behaviorEntry, argumentPosition + localsPosition++, identifier.getName(), new Type(signature));
178 identifierEntryCache.put(identifier.getName(), localVariableEntry); 178 identifierEntryCache.put(identifier.getName(), localVariableEntry);
179 addDeclarationToUnmatched(identifier.getName(), index); 179 addDeclarationToUnmatched(identifier.getName(), index);
180 index.addDeclaration(identifier, localVariableEntry); 180 index.addDeclaration(identifier, localVariableEntry);
@@ -194,7 +194,7 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor {
194 TypeReference typeReference = type.getUserData(Keys.TYPE_REFERENCE); 194 TypeReference typeReference = type.getUserData(Keys.TYPE_REFERENCE);
195 String signature = Descriptor.of(typeReference.getErasedDescription()); 195 String signature = Descriptor.of(typeReference.getErasedDescription());
196 Identifier identifier = initializer.getNameToken(); 196 Identifier identifier = initializer.getNameToken();
197 LocalVariableEntry localVariableEntry = new LocalVariableEntry(behaviorEntry, localsPosition++, initializer.getName(), new Type(signature)); 197 LocalVariableEntry localVariableEntry = new LocalVariableEntry(behaviorEntry, argumentPosition + localsPosition++, initializer.getName(), new Type(signature));
198 identifierEntryCache.put(identifier.getName(), localVariableEntry); 198 identifierEntryCache.put(identifier.getName(), localVariableEntry);
199 addDeclarationToUnmatched(identifier.getName(), index); 199 addDeclarationToUnmatched(identifier.getName(), index);
200 index.addDeclaration(identifier, localVariableEntry); 200 index.addDeclaration(identifier, localVariableEntry);
diff --git a/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java b/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java
index 8909d816..8b4ef9c2 100644
--- a/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java
+++ b/src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java
@@ -116,7 +116,7 @@ public class LocalVariableRenamer {
116 116
117 // then rename the rest of the args, if any 117 // then rename the rest of the args, if any
118 for (int i = starti + numArgs; i < table.tableLength(); i++) { 118 for (int i = starti + numArgs; i < table.tableLength(); i++) {
119 int firstIndex = table.index(starti + numArgs); 119 int firstIndex = Math.min(table.index(starti + numArgs), table.index(i));
120 renameVariable(table, i, constants.addUtf8Info("v" + (table.index(i) - firstIndex + 1))); 120 renameVariable(table, i, constants.addUtf8Info("v" + (table.index(i) - firstIndex + 1)));
121 } 121 }
122 } 122 }
diff --git a/src/main/java/cuchaz/enigma/mapping/Mappings.java b/src/main/java/cuchaz/enigma/mapping/Mappings.java
index 33dd3c54..8aa463fd 100644
--- a/src/main/java/cuchaz/enigma/mapping/Mappings.java
+++ b/src/main/java/cuchaz/enigma/mapping/Mappings.java
@@ -36,7 +36,6 @@ public class Mappings {
36 this.originMapping = originMapping; 36 this.originMapping = originMapping;
37 this.classesByObf = Maps.newHashMap(); 37 this.classesByObf = Maps.newHashMap();
38 this.classesByDeobf = Maps.newHashMap(); 38 this.classesByDeobf = Maps.newHashMap();
39 this.previousState = null;
40 } 39 }
41 40
42 public Collection<ClassMapping> classes() { 41 public Collection<ClassMapping> classes() {