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 {