From ffb520c82a9fd29c50910b834a151072e68d0bbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20R=C3=B6ssler?= Date: Tue, 11 Feb 2020 15:58:04 +0100 Subject: [PATCH 1/2] fix a possible NPE in the AbstractMatcher --- .../jacoco/core/internal/analysis/filter/AbstractMatcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java index e79404cbc4..a3520acd83 100644 --- a/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java +++ b/org.jacoco.core/src/org/jacoco/core/internal/analysis/filter/AbstractMatcher.java @@ -35,7 +35,7 @@ abstract class AbstractMatcher { final void firstIsALoad0(final MethodNode methodNode) { cursor = methodNode.instructions.getFirst(); skipNonOpcodes(); - if (cursor.getOpcode() == Opcodes.ALOAD + if (cursor != null && cursor.getOpcode() == Opcodes.ALOAD && ((VarInsnNode) cursor).var == 0) { return; } From ee49142bab30ae5c5ff12b26eeb2c7e863d25cde Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20R=C3=B6ssler?= Date: Tue, 18 Feb 2020 14:01:40 +0100 Subject: [PATCH 2/2] add a test for empty instructions on AbstractMatcher.firstIsALoadd0 --- .../core/internal/analysis/filter/AbstractMatcherTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/org.jacoco.core.test/src/org/jacoco/core/internal/analysis/filter/AbstractMatcherTest.java b/org.jacoco.core.test/src/org/jacoco/core/internal/analysis/filter/AbstractMatcherTest.java index b62e45010f..6424a98cf6 100644 --- a/org.jacoco.core.test/src/org/jacoco/core/internal/analysis/filter/AbstractMatcherTest.java +++ b/org.jacoco.core.test/src/org/jacoco/core/internal/analysis/filter/AbstractMatcherTest.java @@ -202,6 +202,10 @@ public void nextIsType() { @Test public void firstIsALoad0() { + // should set cursor to null when no opcodes are present + matcher.firstIsALoad0(m); + assertNull(matcher.cursor); + // should set cursor to null when opcode mismatch m.visitInsn(Opcodes.NOP); matcher.firstIsALoad0(m);