From ae972e774e2eb8c72585ad3d4e02687a5c2df66f Mon Sep 17 00:00:00 2001
From: "Shawn O. Pearce" <spearce@spearce.org>
Date: Sat, 15 May 2010 19:10:47 -0700
Subject: [PATCH] Remove unnecessary truncation of in-pack size during copy

The number of bytes to copy was truncated to an int, but the
pack's copyToStream() method expected to be passed a long here.
Pass through the long so we don't truncate a giant object.

Change-Id: I0786ad60a3a33f84d8746efe51f68d64e127c332
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
---
 org.eclipse.jgit/src/org/eclipse/jgit/lib/PackFile.java | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/lib/PackFile.java b/org.eclipse.jgit/src/org/eclipse/jgit/lib/PackFile.java
index 28edf30cd..63f516263 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/lib/PackFile.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/lib/PackFile.java
@@ -270,7 +270,7 @@ final void copyRawData(final PackedObjectLoader loader,
 			throws IOException {
 		final long objectOffset = loader.objectOffset;
 		final long dataOffset = objectOffset + loader.headerSize;
-		final int cnt = (int) (findEndOffset(objectOffset) - dataOffset);
+		final long sz = findEndOffset(objectOffset) - dataOffset;
 		final PackIndex idx = idx();
 
 		if (idx.hasCRC32Support()) {
@@ -283,7 +283,7 @@ final void copyRawData(final PackedObjectLoader loader,
 				headerCnt -= toRead;
 			}
 			final CheckedOutputStream crcOut = new CheckedOutputStream(out, crc);
-			copyToStream(dataOffset, buf, cnt, crcOut, curs);
+			copyToStream(dataOffset, buf, sz, crcOut, curs);
 			final long computed = crc.getValue();
 
 			final ObjectId id = findObjectForOffset(objectOffset);
@@ -301,7 +301,7 @@ final void copyRawData(final PackedObjectLoader loader,
 				coe.initCause(dfe);
 				throw coe;
 			}
-			copyToStream(dataOffset, buf, cnt, out, curs);
+			copyToStream(dataOffset, buf, sz, out, curs);
 		}
 	}
 
-- 
GitLab