You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by ti...@apache.org on 2019/12/21 23:53:44 UTC

[maven-surefire] 04/06: fixed NPE with non-threadsafe java.util.Scanner

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

tibordigana pushed a commit to branch cli
in repository https://gitbox.apache.org/repos/asf/maven-surefire.git

commit c04bb6de013d673598d58278bd4743435953cb7d
Author: tibordigana <ti...@apache.org>
AuthorDate: Mon Dec 2 06:14:55 2019 +0100

    fixed NPE with non-threadsafe java.util.Scanner
---
 .../maven/surefire/extensions/util/LineConsumerThread.java     | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/util/LineConsumerThread.java b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/util/LineConsumerThread.java
index f0f39f3..efce286 100644
--- a/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/util/LineConsumerThread.java
+++ b/surefire-extensions-api/src/main/java/org/apache/maven/surefire/extensions/util/LineConsumerThread.java
@@ -34,7 +34,8 @@ import java.util.concurrent.CountDownLatch;
  */
 public final class LineConsumerThread extends Thread implements Closeable
 {
-    private final Scanner scanner;
+    private final Charset encoding;
+    private final ReadableByteChannel channel;
     private final StreamConsumer consumer;
     private final CountDownLatch endOfStreamsCountdown;
     private volatile boolean disabled;
@@ -52,15 +53,16 @@ public final class LineConsumerThread extends Thread implements Closeable
     {
         setName( threadName );
         setDaemon( true );
-        scanner = new Scanner( channel, encoding.name() );
+        this.channel = channel;
         this.consumer = consumer;
         this.endOfStreamsCountdown = endOfStreamsCountdown;
+        this.encoding = encoding;
     }
 
     @Override
     public void run()
     {
-        try ( Scanner stream = scanner )
+        try ( Scanner stream = new Scanner( channel, encoding.name() ) )
         {
             boolean isError = false;
             while ( stream.hasNextLine() )
@@ -98,6 +100,6 @@ public final class LineConsumerThread extends Thread implements Closeable
     @Override
     public void close() throws IOException
     {
-        scanner.close();
+        channel.close();
     }
 }