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 int runProcess(ProcessBuilder processBuilder, * @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 int runProcess(ProcessBuilder processBuilder, * @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 int runProcess(ProcessBuilder processBuilder, // 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) {