DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://issues.apache.org/bugzilla/show_bug.cgi?id=30097>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://issues.apache.org/bugzilla/show_bug.cgi?id=30097

AbstractCvsTask prematurely closes its outputStream and errorStream

           Summary: AbstractCvsTask prematurely closes its outputStream and
                    errorStream
           Product: Ant
           Version: 1.6.1
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Normal
          Priority: Other
         Component: Core tasks
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


(I apologize if I'm being redundant.  I've posted this issue to the dev list
already, but then I thought maybe that was not the best way to submit bug fix.)

AbstractCvsTask holds a Vector of Commandlines (vecCommandlines).  The execute()
method iterates thru the Commandlines and calls runCommand(Commandline).

runCommand(Commandline) redirects the command output to outputStream and
errorStream but closes them before returning.  So if vecCommandlines holds more
than 1 command, then any subsquent call to runCommand(Commandline) after the 1st
call will cause the command output to be redirected to the closed outputStreams
and errorStream.  (The IOExceptions caused by writing to closed streams are
swallowed by the empty catch clause in StreamPumper).

The patch here moves the closing call of outputStream and errorStream from the
end of runCommand(Commandline) method to the end of execute() method.  The
rationale here is to only close the streams after all commands in
vecCommandlines are executed.

Index: AbstractCvsTask.java
===================================================================
RCS file:
/home/cvspublic/ant/src/main/org/apache/tools/ant/taskdefs/AbstractCvsTask.java,v
retrieving revision 1.34
diff -u -r1.34 AbstractCvsTask.java
--- AbstractCvsTask.java        14 Apr 2004 15:42:06 -0000      1.34
+++ AbstractCvsTask.java        14 Jul 2004 07:41:35 -0000
@@ -365,21 +365,6 @@
             } else {
                 log("Caught exception: " + e.getMessage(), Project.MSG_WARN);
             }
-        } finally {
-            if (outputStream != null) {
-                try {
-                    outputStream.close();
-                } catch (IOException e) {
-                    //ignore
-                }
-            }
-            if (errorStream != null) {
-                try {
-                    errorStream.close();
-                } catch (IOException e) {
-                    //ignore
-                }
-            }
         }
     }
 
@@ -413,6 +398,21 @@
                 removeCommandline(cloned);
             }
             setCommand(savedCommand);
+
+                       if (outputStream != null) {
+                           try {
+                               outputStream.close();
+                           } catch (IOException e) {
+                               //ignore
+                           }
+                       }
+                       if (errorStream != null) {
+                           try {
+                               errorStream.close();
+                           } catch (IOException e) {
+                               //ignore
+                           }
+                       }
         }
     }

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to