From 6de194e83d39c833d76edd7329d51dafac3e8f39 Mon Sep 17 00:00:00 2001 From: Thog Date: Sun, 12 Mar 2017 13:12:50 +0100 Subject: Fix var naming and locals var index issues --- src/main/java/cuchaz/enigma/analysis/SourceIndexBehaviorVisitor.java | 4 ++-- src/main/java/cuchaz/enigma/bytecode/LocalVariableRenamer.java | 2 +- src/main/java/cuchaz/enigma/mapping/Mappings.java | 1 - 3 files changed, 3 insertions(+), 4 deletions(-) (limited to 'src/main') 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 { TypeReference typeReference = type.getUserData(Keys.TYPE_REFERENCE); Identifier identifier = node.getVariableNameToken(); String signature = Descriptor.of(typeReference.getErasedDescription()); - LocalVariableEntry localVariableEntry = new LocalVariableEntry(behaviorEntry, localsPosition++, identifier.getName(), new Type(signature)); + LocalVariableEntry localVariableEntry = new LocalVariableEntry(behaviorEntry, argumentPosition + localsPosition++, identifier.getName(), new Type(signature)); identifierEntryCache.put(identifier.getName(), localVariableEntry); addDeclarationToUnmatched(identifier.getName(), index); index.addDeclaration(identifier, localVariableEntry); @@ -194,7 +194,7 @@ public class SourceIndexBehaviorVisitor extends SourceIndexVisitor { TypeReference typeReference = type.getUserData(Keys.TYPE_REFERENCE); String signature = Descriptor.of(typeReference.getErasedDescription()); Identifier identifier = initializer.getNameToken(); - LocalVariableEntry localVariableEntry = new LocalVariableEntry(behaviorEntry, localsPosition++, initializer.getName(), new Type(signature)); + LocalVariableEntry localVariableEntry = new LocalVariableEntry(behaviorEntry, argumentPosition + localsPosition++, initializer.getName(), new Type(signature)); identifierEntryCache.put(identifier.getName(), localVariableEntry); addDeclarationToUnmatched(identifier.getName(), index); 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 { // then rename the rest of the args, if any for (int i = starti + numArgs; i < table.tableLength(); i++) { - int firstIndex = table.index(starti + numArgs); + int firstIndex = Math.min(table.index(starti + numArgs), table.index(i)); renameVariable(table, i, constants.addUtf8Info("v" + (table.index(i) - firstIndex + 1))); } } 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 { this.originMapping = originMapping; this.classesByObf = Maps.newHashMap(); this.classesByDeobf = Maps.newHashMap(); - this.previousState = null; } public Collection classes() { -- cgit v1.2.3