Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Duplicate
-
1.21
-
None
-
None
Description
When `input.read(b)` returns `readNow` < `len`, then it means
`input.read(b)` will need to be called again with the same
buffer, whose `remaining()` is now the old `remaining()` - `readNow`.
This way the ReadableByteChannel knows how many bytes are to be
read in subsequent iterations of the `while (read < len)` loop.
This is currently not the case, because there is a call to rewind()
which results in a buffer whose remaining() is reset to `len` if
`readNow` < `len`.
I suspect the readRange() method has only been used with channels that never do partial reads (such In Memory Byte Channels backed by an array), and hence the problem has not been experienced until now.
Attachments
Attachments
Issue Links
- is fixed by
-
COMPRESS-584 IOUtils.readRange() can read more from a channel than asked for
- Resolved
- links to