From b993ee5f35ae8c33604e7d1f2eb6b38754a5e23b Mon Sep 17 00:00:00 2001 From: Ilya Klyuchnikov Date: Mon, 23 Jun 2014 04:00:43 +0400 Subject: [PATCH] NPE fix (possible dead bytecode instructions) --- .../bytecodeAnalysis/ControlFlow.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ControlFlow.java b/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ControlFlow.java index 275045ff5764..4ee591145bf6 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ControlFlow.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/bytecodeAnalysis/ControlFlow.java @@ -44,19 +44,22 @@ final class cfg { TIntHashSet result = new TIntHashSet(); for (int i = 0; i < frames.length; i++) { AbstractInsnNode insnNode = insns.get(i); - switch (insnNode.getOpcode()) { - case ARETURN: - case IRETURN: - case LRETURN: - case FRETURN: - case DRETURN: - for (AbstractInsnNode sourceInsn : frames[i].pop().insns) { - result.add(insns.indexOf(sourceInsn)); - } - break; + Frame frame = frames[i]; + if (frame != null) { + switch (insnNode.getOpcode()) { + case ARETURN: + case IRETURN: + case LRETURN: + case FRETURN: + case DRETURN: + for (AbstractInsnNode sourceInsn : frame.pop().insns) { + result.add(insns.indexOf(sourceInsn)); + } + break; - default: - break; + default: + break; + } } } return result;