From 942d99fda384d248e6a77a8c3101afe772320560 Mon Sep 17 00:00:00 2001 From: Runemoro Date: Thu, 19 Mar 2020 18:30:59 -0400 Subject: Fix CFR-related bugs --- src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java | 4 ++-- src/main/java/cuchaz/enigma/source/procyon/index/TokenFactory.java | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) (limited to 'src/main') 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 { } private MethodEntry getMethodEntry(MethodPrototype method) { - if (method.getClassType() == null) { + if (method == null || method.getClassType() == null) { return null; } @@ -97,7 +97,7 @@ public class EnigmaDumper implements Dumper { private LocalVariableEntry getParameterEntry(MethodPrototype method, int parameterIndex, String name) { int variableIndex = method.isInstanceMethod() ? 1 : 0; for (int i = 0; i < parameterIndex; i++) { - variableIndex += method.getArgs().get(parameterIndex).getStackType().getComputationCategory(); + variableIndex += method.getArgs().get(i).getStackType().getComputationCategory(); } 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 { String name = node instanceof Identifier ? ((Identifier) node).getName() : ""; Region region = node.getRegion(); + if (region.getBeginLine() == 0) { + System.err.println("Got bad region from Procyon for node " + node); + return null; + } + int start = index.getPosition(region.getBeginLine(), region.getBeginColumn()); int end = index.getPosition(region.getEndLine(), region.getEndColumn()); String text = index.getSource().substring(start, end); -- cgit v1.2.3