diff options
| author | 2017-03-12 13:12:50 +0100 | |
|---|---|---|
| committer | 2017-03-12 13:12:50 +0100 | |
| commit | 6de194e83d39c833d76edd7329d51dafac3e8f39 (patch) | |
| tree | dee1dc25e7c1131821f258feecce1c733e61ffb4 | |
| parent | Follow Fabric guidelines (diff) | |
| download | enigma-6de194e83d39c833d76edd7329d51dafac3e8f39.tar.gz enigma-6de194e83d39c833d76edd7329d51dafac3e8f39.tar.xz enigma-6de194e83d39c833d76edd7329d51dafac3e8f39.zip | |
Fix var naming and locals var index issues
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() { |