summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java6
1 files changed, 5 insertions, 1 deletions
diff --git a/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java b/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java
index ecd460de..698a3517 100644
--- a/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java
+++ b/enigma/src/main/java/cuchaz/enigma/analysis/index/IndexReferenceVisitor.java
@@ -139,13 +139,17 @@ public class IndexReferenceVisitor extends ClassVisitor {
139 } 139 }
140 140
141 private ReferenceTargetType getReferenceTargetType(int stackDepth) { 141 private ReferenceTargetType getReferenceTargetType(int stackDepth) {
142 if (stack == null) { // Unreachable instruction
143 return ReferenceTargetType.uninitialized();
144 }
145
142 if (stackDepth >= stack.size()) { 146 if (stackDepth >= stack.size()) {
143 throw new IllegalStateException("Stack depth " + stackDepth + " is higher than the stack: " + stackValuesToString(stack) + " in method " + callerEntry); 147 throw new IllegalStateException("Stack depth " + stackDepth + " is higher than the stack: " + stackValuesToString(stack) + " in method " + callerEntry);
144 } 148 }
145 149
146 Object stackValue = stack.get(stack.size() - 1 - stackDepth); 150 Object stackValue = stack.get(stack.size() - 1 - stackDepth);
147 151
148 if (stackValue.equals(Opcodes.UNINITIALIZED_THIS) || stackValue instanceof Label) { 152 if (stackValue.equals(Opcodes.UNINITIALIZED_THIS) || stackValue.equals(Opcodes.NULL) || stackValue instanceof Label) {
149 return ReferenceTargetType.uninitialized(); 153 return ReferenceTargetType.uninitialized();
150 } 154 }
151 155