[ https://issues.apache.org/jira/browse/ZOOKEEPER-1843?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bill Havanki updated ZOOKEEPER-1843: ------------------------------------ Attachment: ZOOKEEPER-1843.patch > Oddity in ByteBufferInputStream skip > ------------------------------------ > > Key: ZOOKEEPER-1843 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1843 > Project: ZooKeeper > Issue Type: Bug > Reporter: Justin SB > Assignee: Bill Havanki > Priority: Minor > Attachments: ZOOKEEPER-1843.patch > > > 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.2#6252)