Browse Source

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
master
Peter Donald 23 years ago
parent
commit
b2f61cd56d
1 changed files with 15 additions and 5 deletions
  1. +15
    -5
      src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java

+ 15
- 5
src/main/org/apache/tools/ant/taskdefs/cvslib/RedirectingStreamHandler.java View File

@@ -7,12 +7,12 @@
*/ */
package org.apache.tools.ant.taskdefs.cvslib; 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.IOException;
import java.io.InputStream; import java.io.InputStream;
import java.io.InputStreamReader; 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. * A dummy stream handler that just passes stuff to the parser.
@@ -25,6 +25,7 @@ class RedirectingStreamHandler
{ {
private final ChangeLogParser m_parser; private final ChangeLogParser m_parser;
private BufferedReader m_reader; private BufferedReader m_reader;
private InputStreamReader m_error;


public RedirectingStreamHandler( final ChangeLogParser parser ) public RedirectingStreamHandler( final ChangeLogParser parser )
{ {
@@ -49,7 +50,7 @@ class RedirectingStreamHandler
*/ */
public void setProcessErrorStream( InputStream is ) throws IOException 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 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 ); m_parser.stdout( line );
line = m_reader.readLine(); 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();
}
} }


/** /**


Loading…
Cancel
Save