Mercurial > hg4j
diff src/org/tmatesoft/hg/internal/FilterDataAccess.java @ 420:6c22bdc0bdfd
Respect long offsets in revlogs
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Thu, 22 Mar 2012 22:56:01 +0100 |
parents | 5e95b0da26f2 |
children | fdd7d756dea0 |
line wrap: on
line diff
--- a/src/org/tmatesoft/hg/internal/FilterDataAccess.java Thu Mar 22 21:36:41 2012 +0100 +++ b/src/org/tmatesoft/hg/internal/FilterDataAccess.java Thu Mar 22 22:56:01 2012 +0100 @@ -28,11 +28,11 @@ */ public class FilterDataAccess extends DataAccess { private final DataAccess dataAccess; - private final int offset; + private final long offset; private final int length; private int count; - public FilterDataAccess(DataAccess dataAccess, int offset, int length) { + public FilterDataAccess(DataAccess dataAccess, long offset, int length) { this.dataAccess = dataAccess; this.offset = offset; this.length = length; @@ -64,8 +64,8 @@ if (localOffset < 0 || localOffset > length) { throw new IllegalArgumentException(); } - dataAccess.seek(offset + localOffset); - count = (int) (length - localOffset); + dataAccess.longSeek(offset + localOffset); + count = length - localOffset; } @Override @@ -91,7 +91,7 @@ throw new IOException(String.format("Underflow. Bytes left: %d. FilterDA[offset: %d, length: %d]", count, offset, length)); } if (count == length) { - dataAccess.seek(offset); + dataAccess.longSeek(offset); } count--; return dataAccess.readByte(); @@ -106,7 +106,7 @@ throw new IOException(String.format("Underflow. Bytes left: %d, asked to read %d. FilterDA[offset: %d, length: %d]", count, len, offset, length)); } if (count == length) { - dataAccess.seek(offset); + dataAccess.longSeek(offset); } dataAccess.readBytes(b, off, len); count -= len;