diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
index b61e47f5f..253acbb76 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/util/FS.java
@@ -949,9 +949,7 @@ public abstract class FS {
* @param outRedirect
* An OutputStream on which to redirect the processes stdout. Can
* be null
, in which case the processes standard
- * output will be lost. If binary is set to false
- * then it is expected that the process emits text data which
- * should be processed line by line.
+ * output will be lost.
* @param errRedirect
* An OutputStream on which to redirect the processes stderr. Can
* be null
, in which case the processes standard
@@ -959,9 +957,9 @@ public abstract class FS {
* @param inRedirect
* An InputStream from which to redirect the processes stdin. Can
* be null
, in which case the process doesn't get
- * any data over stdin. If binary is set to
- * false
then it is expected that the process
- * expects text data which should be processed line by line.
+ * any data over stdin. It is assumed that the whole InputStream
+ * will be consumed by the process. The method will close the
+ * inputstream after all bytes are read.
* @return the return code of this process.
* @throws IOException
* if an I/O error occurs while executing this process.
@@ -1011,6 +1009,9 @@ public abstract class FS {
// A process doesn't clean its own resources even when destroyed
// Explicitly try and close all three streams, preserving the
// outer I/O exception if any.
+ if (inRedirect != null) {
+ inRedirect.close();
+ }
try {
process.getErrorStream().close();
} catch (IOException e) {