Browse Source

IndexPack: Use byte limited form of getCachedBytes

Currently our algorithm requires that we have the delta base as
a contiguous byte array... but getCachedBytes() might not work
if the object is considered to be large by its underlying loader.
Use the limited form to obtain the object as a byte array instead.

Change-Id: I33f12a8811cb6a4a67396174733f209db8119b42
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
stable-0.9
Shawn O. Pearce 14 years ago
parent
commit
a3945d1bc8
  1. 4
      org.eclipse.jgit/src/org/eclipse/jgit/transport/IndexPack.java

4
org.eclipse.jgit/src/org/eclipse/jgit/transport/IndexPack.java

@ -613,7 +613,7 @@ public class IndexPack {
missing.add(baseId);
continue;
}
final byte[] data = ldr.getCachedBytes();
final byte[] data = ldr.getCachedBytes(Integer.MAX_VALUE);
final int typeCode = ldr.getType();
final PackedObjectInfo oe;
@ -870,7 +870,7 @@ public class IndexPack {
try {
final ObjectLoader ldr = readCurs.open(id, type);
final byte[] existingData = ldr.getCachedBytes();
final byte[] existingData = ldr.getCachedBytes(Integer.MAX_VALUE);
if (!Arrays.equals(data, existingData)) {
throw new IOException(MessageFormat.format(JGitText.get().collisionOn, id.name()));
}

Loading…
Cancel
Save