commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Gary Gregory (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (IO-356) CharSequenceInputStream#reset() behaves incorrectly in case when buffer size is not dividable by data size
Date Fri, 30 Nov 2012 16:53:59 GMT

    [ https://issues.apache.org/jira/browse/IO-356?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13507445#comment-13507445
] 

Gary Gregory commented on IO-356:
---------------------------------

I've added tests with @Ignore but the problem seems deeper. The fix above does not work with
the tests I added (unless the tests have bugs ;)

It's not clear why we are not simply doing:

{code:java}
    /**
     * {@inheritDoc}
     * @param readlimit max read limit (ignored)
     */
    @Override
    public synchronized void mark(@SuppressWarnings("unused") int readlimit) {
        //this.mark = this.cbuf.position();
        this.cbuf.mark();
    }

    @Override
    public synchronized void reset() throws IOException {
//        if (this.mark != NO_MARK) {
//            this.cbuf.position(this.mark);
//            this.mark = NO_MARK;
//        }
        this.cbuf.reset();
    }
{code}

This does not fix anything but it does not break anything else.

If we need a mark, then we need tests to show why the solution above does not suffice.

Help wanted.

Gary
                
> CharSequenceInputStream#reset() behaves incorrectly in case when buffer size is not dividable
by data size
> ----------------------------------------------------------------------------------------------------------
>
>                 Key: IO-356
>                 URL: https://issues.apache.org/jira/browse/IO-356
>             Project: Commons IO
>          Issue Type: Bug
>          Components: Streams/Writers
>    Affects Versions: 2.4
>            Reporter: Dmitry Katsubo
>         Attachments: CharSequenceInputStreamTest.java
>
>
> The size effect happens when buffer size of input stream is not dividable by requested
data size. The bug is hidden in {{CharSequenceInputStream#reset()}} method which should also
call (I think) {{bbuf.limit(0)}} otherwise next call to {{CharSequenceInputStream#read()}}
will return the remaining tail which {{bbuf}} has accumulated.
> In the attached test case the test fails, if {{dataSize = 13}} (not dividable by 10)
and runs OK if {{dataSize = 20}} (dividable by 10).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message