From 64335567acd6ca0ba5cbf849c14ce0ea48778a62 Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Sun, 14 Jun 2020 17:28:49 -0400 Subject: [PATCH] Fix NullPointerException in appendLog --- .../sbt/internal/util/ConsoleAppender.scala | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleAppender.scala b/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleAppender.scala index d8230c95a..5ededd5ef 100644 --- a/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleAppender.scala +++ b/internal/util-logging/src/main/scala/sbt/internal/util/ConsoleAppender.scala @@ -484,21 +484,25 @@ trait Appender extends AutoCloseable { message: String ): Unit = try { - val len = - labelColor.length + label.length + messageColor.length + reset.length * 3 + ClearScreenAfterCursor.length - val builder: StringBuilder = new StringBuilder(len) - message.linesIterator.foreach { line => - builder.ensureCapacity(len + line.length + 4) - builder.setLength(0) + // according to https://github.com/sbt/sbt/issues/5608, sometimes we get a null message + if (message == null) () + else { + val len = + labelColor.length + label.length + messageColor.length + reset.length * 3 + ClearScreenAfterCursor.length + val builder: StringBuilder = new StringBuilder(len) + message.linesIterator.foreach { line => + builder.ensureCapacity(len + line.length + 4) + builder.setLength(0) - def fmted(a: String, b: String) = builder.append(reset).append(a).append(b).append(reset) + def fmted(a: String, b: String) = builder.append(reset).append(a).append(b).append(reset) - builder.append(reset).append('[') - fmted(labelColor, label) - builder.append("] ") - fmted(messageColor, line) - builder.append(ClearScreenAfterCursor) - write(builder.toString) + builder.append(reset).append('[') + fmted(labelColor, label) + builder.append("] ") + fmted(messageColor, line) + builder.append(ClearScreenAfterCursor) + write(builder.toString) + } } } catch { case _: InterruptedException => }