diff --git a/WHATSNEW b/WHATSNEW index 0d1254dcd..d0b4d3bda 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -420,6 +420,10 @@ Fixed bugs: failed to load. Bugzilla Report 44103. + * Logging exceptions without a message would cause a + NullPointerException. + Bugzilla Report 47623. + Other changes: -------------- * The get task now also follows redirects from http to https diff --git a/src/main/org/apache/tools/ant/Project.java b/src/main/org/apache/tools/ant/Project.java index 52c9746a2..8487dbc0a 100644 --- a/src/main/org/apache/tools/ant/Project.java +++ b/src/main/org/apache/tools/ant/Project.java @@ -2171,6 +2171,9 @@ public class Project implements ResourceFactory { private void fireMessageLoggedEvent(BuildEvent event, String message, int priority) { + if (message == null) { + message = String.valueOf(message); + } if (message.endsWith(StringUtils.LINE_SEP)) { int endIndex = message.length() - StringUtils.LINE_SEP.length(); event.setMessage(message.substring(0, endIndex), priority); diff --git a/src/tests/junit/org/apache/tools/ant/ProjectTest.java b/src/tests/junit/org/apache/tools/ant/ProjectTest.java index ba741823a..fd4cff15d 100644 --- a/src/tests/junit/org/apache/tools/ant/ProjectTest.java +++ b/src/tests/junit/org/apache/tools/ant/ProjectTest.java @@ -276,6 +276,14 @@ public class ProjectTest extends TestCase { assertTrue("Expected logging thread to finish successfully", done[0]); } + /** + * @see https://issues.apache.org/bugzilla/show_bug.cgi?id=47623 + */ + public void testNullThrowableMessageLog() { + p.log(new Task() {}, null, new Throwable(), Project.MSG_ERR); + // be content if no exception has been thrown + } + private class DummyTaskPrivate extends Task { public DummyTaskPrivate() {} public void execute() {}