[ 
https://issues.apache.org/jira/browse/COMPRESS-595?focusedWorklogId=677991&page=com.atlassian.jira.plugin.system.issuetabpanels:worklog-tabpanel#worklog-677991
 ]

ASF GitHub Bot logged work on COMPRESS-595:
-------------------------------------------

                Author: ASF GitHub Bot
            Created on: 06/Nov/21 01:45
            Start Date: 06/Nov/21 01:45
    Worklog Time Spent: 10m 
      Work Description: PeterAlfredLee commented on pull request #229:
URL: https://github.com/apache/commons-compress/pull/229#issuecomment-962358657


   Related PR #214 


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


Issue Time Tracking
-------------------

    Worklog Id:     (was: 677991)
    Time Spent: 40m  (was: 0.5h)

> IOUtils.readRange(ReadableByteChannel input, int len) reads more than len 
> when input.read() returns < len (ie. there is a partial read)
> ---------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: COMPRESS-595
>                 URL: https://issues.apache.org/jira/browse/COMPRESS-595
>             Project: Commons Compress
>          Issue Type: Bug
>    Affects Versions: 1.21
>            Reporter: NP
>            Priority: Major
>         Attachments: IOUtilsTest.kt
>
>          Time Spent: 40m
>  Remaining Estimate: 0h
>
> 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.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to