aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java
index b1e95520cc..96ca690c1c 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/internal/storage/dfs/DfsPackFile.java
@@ -607,8 +607,15 @@ public final class DfsPackFile extends BlockBasedFile {
private void readFully(long position, byte[] dstbuf, int dstoff, int cnt,
DfsReader ctx) throws IOException {
- if (ctx.copy(this, position, dstbuf, dstoff, cnt) != cnt)
- throw new EOFException();
+ while (cnt > 0) {
+ int copied = ctx.copy(this, position, dstbuf, dstoff, cnt);
+ if (copied == 0) {
+ throw new EOFException();
+ }
+ position += copied;
+ dstoff += copied;
+ cnt -= copied;
+ }
}
ObjectLoader load(DfsReader ctx, long pos)