You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rg...@apache.org on 2020/03/28 17:28:59 UTC

[logging-log4j2] 01/02: avoid NPE because the stacklocator returned null (#356)

This is an automated email from the ASF dual-hosted git repository.

rgoers pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit d5f1a25d2b7775c5e83c3c7652e26147087eaffd
Author: Romain Manni-Bucau <rm...@gmail.com>
AuthorDate: Sat Mar 28 17:58:04 2020 +0100

    avoid NPE because the stacklocator returned null (#356)
---
 .../main/java/org/apache/logging/log4j/util/StackLocator.java    | 3 ++-
 .../java/org/apache/logging/log4j/util/StackLocatorTest.java     | 9 ++++++++-
 2 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/log4j-api-java9/src/main/java/org/apache/logging/log4j/util/StackLocator.java b/log4j-api-java9/src/main/java/org/apache/logging/log4j/util/StackLocator.java
index 1eec813..12e4e2a 100644
--- a/log4j-api-java9/src/main/java/org/apache/logging/log4j/util/StackLocator.java
+++ b/log4j-api-java9/src/main/java/org/apache/logging/log4j/util/StackLocator.java
@@ -76,7 +76,8 @@ public class StackLocator {
 
     public StackTraceElement calcLocation(final String fqcnOfLogger) {
         FQCN.set(fqcnOfLogger);
-        StackTraceElement element = walker.walk(LOCATOR).toStackTraceElement();
+        final StackWalker.StackFrame walk = walker.walk(LOCATOR);
+        final StackTraceElement element = walk == null ? null : walk.toStackTraceElement();
         FQCN.set(null);
         return element;
     }
diff --git a/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/StackLocatorTest.java b/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/StackLocatorTest.java
index 77396c9..bf76fc0 100644
--- a/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/StackLocatorTest.java
+++ b/log4j-api-java9/src/test/java/org/apache/logging/log4j/util/StackLocatorTest.java
@@ -26,6 +26,7 @@ import java.util.Stack;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertSame;
 
 @RunWith(BlockJUnit4ClassRunner.class)
@@ -132,7 +133,13 @@ public class StackLocatorTest {
          */
         final StackTraceElement element = new Foo().foo();
         assertEquals("org.apache.logging.log4j.util.StackLocatorTest$Foo", element.getClassName());
-        assertEquals(100, element.getLineNumber());
+        assertEquals(101, element.getLineNumber());
+    }
+
+    @Test
+    public void testCalcLocationWhenNotInTheStack() {
+        final StackTraceElement stackTraceElement = stackLocator.calcLocation("java.util.Logger");
+        assertNull(stackTraceElement);
     }
 
     class ClassLocator {