From b2f61cd56da6711033326fcc50d5cbcf853d2b12 Mon Sep 17 00:00:00 2001 From: Peter Donald Date: Mon, 1 Apr 2002 06:35:41 +0000 Subject: [PATCH] Made sure error is read (and ignored?) to avoid blocking. Reported By: Vincent Massol git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@272147 13f79535-47bb-0310-9956-ffa450edef68 --- .../cvslib/RedirectingStreamHandler.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java b/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java index 0478fafdc..86eca19b2 100644 --- a/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java +++ b/src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java @@ -7,12 +7,12 @@ */ package org.apache.tools.ant.taskdefs.cvslib; -import org.apache.tools.ant.taskdefs.ExecuteStreamHandler; -import java.io.OutputStream; +import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; -import java.io.BufferedReader; +import java.io.OutputStream; +import org.apache.tools.ant.taskdefs.ExecuteStreamHandler; /** * A dummy stream handler that just passes stuff to the parser. @@ -25,6 +25,7 @@ class RedirectingStreamHandler { private final ChangeLogParser m_parser; private BufferedReader m_reader; + private InputStreamReader m_error; public RedirectingStreamHandler( final ChangeLogParser parser ) { @@ -49,7 +50,7 @@ class RedirectingStreamHandler */ public void setProcessErrorStream( InputStream is ) throws IOException { - //ignore + m_error = new InputStreamReader( is ); } /** @@ -59,7 +60,7 @@ class RedirectingStreamHandler */ public void setProcessOutputStream( InputStream is ) throws IOException { - m_reader = new BufferedReader(new InputStreamReader(is)); + m_reader = new BufferedReader( new InputStreamReader( is ) ); } /** @@ -73,6 +74,15 @@ class RedirectingStreamHandler m_parser.stdout( line ); line = m_reader.readLine(); } + + // Read the error stream so that it does not block ! + // We cannot use a BufferedReader as the ready() method is bugged! + // (see Bug 4329985, which is supposed to be fixed in JDK1.4 : + //http://developer.java.sun.com/developer/bugParade/bugs/4329985.html) + while( m_error.ready() ) + { + m_error.read(); + } } /**