diff --git a/platform/util-rt/src/com/intellij/util/io/LimitedInputStream.java b/platform/util-rt/src/com/intellij/util/io/LimitedInputStream.java index bc0f868a83a4..607d0d41088e 100644 --- a/platform/util-rt/src/com/intellij/util/io/LimitedInputStream.java +++ b/platform/util-rt/src/com/intellij/util/io/LimitedInputStream.java @@ -72,6 +72,10 @@ public class LimitedInputStream extends FilterInputStream { return Math.min(super.available(), myReadLimit - myBytesRead); } + protected int remainingLimit() { + return myReadLimit - myBytesRead; + } + public synchronized void mark(final int readLimit) { throw new UnsupportedOperationException(); } diff --git a/platform/util/src/com/intellij/util/io/PersistentEnumeratorBase.java b/platform/util/src/com/intellij/util/io/PersistentEnumeratorBase.java index 363a75bfd123..172e74a7b81c 100644 --- a/platform/util/src/com/intellij/util/io/PersistentEnumeratorBase.java +++ b/platform/util/src/com/intellij/util/io/PersistentEnumeratorBase.java @@ -509,7 +509,12 @@ abstract class PersistentEnumeratorBase implements Forceable, Closeable { myKeyStorage.force(); DataInputStream keysStream = new DataInputStream(new BufferedInputStream(new LimitedInputStream(new FileInputStream(keystreamFile()), - myKeyStoreFileLength))); + myKeyStoreFileLength) { + @Override + public int available() throws IOException { + return remainingLimit(); + } + }, 32768)); try { try { while (true) {