Justin SB created ZOOKEEPER-1843:
------------------------------------
Summary: Oddity in ByteBufferInputStream skip
Key: ZOOKEEPER-1843
URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1843
Project: ZooKeeper
Issue Type: Bug
Reporter: Justin SB
Priority: Minor
I was reading ByteBufferInputStream.java; here is the skip method:
public long skip(long n) throws IOException {
long newPos = bb.position() + n;
if (newPos > bb.remaining()) {
n = bb.remaining();
}
bb.position(bb.position() + (int) n);
return n;
}
The first two lines look wrong; we compare a "point" (position) to a "distance"
(remaining). I think the test should be if (newPos >= bb.limit()).
Or more simply:
public long skip(long n) throws IOException {
int remaining = buffer.remaining();
if (n > remaining) {
n = remaining;
}
buffer.position(buffer.position() + (int) n);
return n;
}
--
This message was sent by Atlassian JIRA
(v6.1.4#6159)