Kapil Verma created IO-893:
------------------------------

             Summary: BOMInputStream: problems with keep track of last read 
position for ByteArrayInputStream
                 Key: IO-893
                 URL: https://issues.apache.org/jira/browse/IO-893
             Project: Commons IO
          Issue Type: Bug
          Components: Streams/Writers
    Affects Versions: 2.22.0
         Environment: openJdk 24

junit-jupiter-api-5.10.1
            Reporter: Kapil Verma
         Attachments: CommonsIOTest.java

The following test case fails with commons-io-2.22.0. It passes in 2.21.0 and 
earlier versions.[^CommonsIOTest.java]
{code:java}
        @Test
        public void testCommonsIO() throws IOException {
                String text = "<?xml version='1.0' encoding='UTF-8'?>\n"
                                + "<xbrli:xbrl 
xmlns='http://www.xbrl.org/2003/instance'";
                
                InputStream i = new ByteArrayInputStream(text
                                .getBytes("UTF-8"));
                BOMInputStream is = BOMInputStream.builder().setInputStream(i)
                                .setByteOrderMarks(ByteOrderMark.UTF_8, 
ByteOrderMark.UTF_16BE,
                                ByteOrderMark.UTF_16LE, ByteOrderMark.UTF_32BE, 
ByteOrderMark.UTF_32LE)
                .setInclude(false).get();
                
                is.reset();
                
                String str1 = new String(read(is, new byte[4]));
                
                byte[] b2 = new byte[64];
                is.read(b2, 0, 64);
                
                String str2 = str1 + new String(b2);
                System.out.print(str2);
                
                assertTrue(str2.startsWith("<?xml version"), "String does not 
start with \"<?xml version\"");
        }
        
        public byte[] read(BOMInputStream is, byte[] b) throws IOException {
                for(int i=0; i<4; i++) {
                        int bit = is.read();
                        if(bit == -1) {
                                break;
                        }
                        b[i] = (byte)bit;
                }
                return b;
        }
{code}
 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to