diff --git a/platform/util/src/com/intellij/util/io/BaseOutputReader.java b/platform/util/src/com/intellij/util/io/BaseOutputReader.java index 3995151ba89d..b45d04e3101b 100644 --- a/platform/util/src/com/intellij/util/io/BaseOutputReader.java +++ b/platform/util/src/com/intellij/util/io/BaseOutputReader.java @@ -33,6 +33,7 @@ public abstract class BaseOutputReader { protected volatile boolean isStopped = false; private final char[] myBuffer = new char[8192]; + private final StringBuilder myTextBuffer = new StringBuilder(); private boolean skipLF = false; private Future myFinishedFuture = null; @@ -78,12 +79,12 @@ public abstract class BaseOutputReader { protected synchronized boolean readAvailable() throws IOException { char[] buffer = myBuffer; - StringBuilder token = new StringBuilder(); + StringBuilder token = myTextBuffer; + token.setLength(0); boolean read = false; - while (myReader.ready()) { - int n = myReader.read(buffer); - if (n <= 0) break; + int n; + while ((n = myReader.read(buffer)) > 0) { read = true; for (int i = 0; i < n; i++) {