final ByteBuffer buffer = ByteBuffer.allocate(length*2 + 2);
SVNDiffInstruction.writeInt(buffer, length);
if (length < 512) {
buffer.put(src, offset, length);
} else {
DeflaterOutputStream out = new DeflaterOutputStream(new OutputStream() {
public void write(int b) throws IOException {
buffer.put((byte) (b & 0xFF));
}
public void write(byte[] b, int off, int len) throws IOException {
buffer.put(b, off, len);
}
public void write(byte[] b) throws IOException {
write(b, 0, b.length);
}
});
out.write(src, offset, length);
out.finish();
if (buffer.position() >= length) {
buffer.clear();
SVNDiffInstruction.writeInt(buffer, length);
buffer.put(src, offset, length);
}