in src/main/java/org/apache/sling/servlets/get/impl/helpers/StreamRenderer.java [559:590]
static void staticCopyRange(InputStream istream,
OutputStream ostream, long start, long end) throws IOException {
long position = 0;
byte buffer[] = new byte[IO_BUFFER_SIZE];
while (position < start) {
long skipped = istream.skip(start - position);
if (skipped == 0) {
// skip() may return zero if for whatever reason it wasn't
// able to advance the stream. In such cases we need to
// fall back to read() to force the skipping of bytes.
int len = (int) Math.min(start - position, buffer.length);
skipped = istream.read(buffer, 0, len);
if (skipped == -1) {
throw new IOException("Failed to skip " + start
+ " bytes; only skipped " + position + " bytes");
}
}
position += skipped;
}
while (position < end) {
int len = (int) Math.min(end - position, buffer.length);
int read = istream.read(buffer, 0, len);
if (read != -1) {
position += read;
ostream.write(buffer, 0, read);
} else {
break;
}
}
}