diff options
| author | 2020-03-19 18:30:59 -0400 | |
|---|---|---|
| committer | 2020-03-19 18:30:59 -0400 | |
| commit | 942d99fda384d248e6a77a8c3101afe772320560 (patch) | |
| tree | f3fcc76961b1b5e1aa981c213eba0e470d9d34f0 /src | |
| parent | Add support for reading/writing zipped mappings (#199) (diff) | |
| download | enigma-942d99fda384d248e6a77a8c3101afe772320560.tar.gz enigma-942d99fda384d248e6a77a8c3101afe772320560.tar.xz enigma-942d99fda384d248e6a77a8c3101afe772320560.zip | |
Fix CFR-related bugs
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java | 4 | ||||
| -rw-r--r-- | src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java | 5 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java b/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java index b9cdbeae..e265d9d1 100644 --- a/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java +++ b/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java | |||
| @@ -82,7 +82,7 @@ public class EnigmaDumper implements Dumper { | |||
| 82 | } | 82 | } |
| 83 | 83 | ||
| 84 | private MethodEntry getMethodEntry(MethodPrototype method) { | 84 | private MethodEntry getMethodEntry(MethodPrototype method) { |
| 85 | if (method.getClassType() == null) { | 85 | if (method == null || method.getClassType() == null) { |
| 86 | return null; | 86 | return null; |
| 87 | } | 87 | } |
| 88 | 88 | ||
| @@ -97,7 +97,7 @@ public class EnigmaDumper implements Dumper { | |||
| 97 | private LocalVariableEntry getParameterEntry(MethodPrototype method, int parameterIndex, String name) { | 97 | private LocalVariableEntry getParameterEntry(MethodPrototype method, int parameterIndex, String name) { |
| 98 | int variableIndex = method.isInstanceMethod() ? 1 : 0; | 98 | int variableIndex = method.isInstanceMethod() ? 1 : 0; |
| 99 | for (int i = 0; i < parameterIndex; i++) { | 99 | for (int i = 0; i < parameterIndex; i++) { |
| 100 | variableIndex += method.getArgs().get(parameterIndex).getStackType().getComputationCategory(); | 100 | variableIndex += method.getArgs().get(i).getStackType().getComputationCategory(); |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | return new LocalVariableEntry(getMethodEntry(method), variableIndex, name, true, null); | 103 | return new LocalVariableEntry(getMethodEntry(method), variableIndex, name, true, null); |
diff --git a/src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java b/src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java index db90ffae..62e7c102 100644 --- a/src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java +++ b/src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java | |||
| @@ -17,6 +17,11 @@ public class TokenFactory { | |||
| 17 | String name = node instanceof Identifier ? ((Identifier) node).getName() : ""; | 17 | String name = node instanceof Identifier ? ((Identifier) node).getName() : ""; |
| 18 | Region region = node.getRegion(); | 18 | Region region = node.getRegion(); |
| 19 | 19 | ||
| 20 | if (region.getBeginLine() == 0) { | ||
| 21 | System.err.println("Got bad region from Procyon for node " + node); | ||
| 22 | return null; | ||
| 23 | } | ||
| 24 | |||
| 20 | int start = index.getPosition(region.getBeginLine(), region.getBeginColumn()); | 25 | int start = index.getPosition(region.getBeginLine(), region.getBeginColumn()); |
| 21 | int end = index.getPosition(region.getEndLine(), region.getEndColumn()); | 26 | int end = index.getPosition(region.getEndLine(), region.getEndColumn()); |
| 22 | String text = index.getSource().substring(start, end); | 27 | String text = index.getSource().substring(start, end); |