commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Nathan Kronenfeld (JIRA)" <>
Subject [jira] [Created] (COMPRESS-309) BZip2CompressorInputStream return value wrong when told to read to a full buffer.
Date Wed, 18 Feb 2015 17:23:11 GMT
Nathan Kronenfeld created COMPRESS-309:

             Summary: BZip2CompressorInputStream return value wrong when told to read to a
full buffer.
                 Key: COMPRESS-309
             Project: Commons Compress
          Issue Type: Bug
          Components: Compressors
    Affects Versions: 1.9, 1.4.1
            Reporter: Nathan Kronenfeld, offset, length) returns -1 when given an offset equal
to the length of the buffer.

This indicates, not that the buffer was full, but that the stream was finished.

It seems like a pretty stupid thing to do - but I'm getting this when trying to use Kryo serialization
(which is probably a bug on their part, too), so it does occur and has negative affects.

Here's a JUnit test that shows the problem specifically:

	public void testApacheCommonsBZipUncompression () throws Exception {
		// Create a big random piece of data
		byte[] rawData = new byte[1048576];
		for (int i=0; i<rawData.length; ++i) {
			rawData[i] = (byte) Math.floor(Math.random()*256);

		// Compress it
		ByteArrayOutputStream baos = new ByteArrayOutputStream();
		BZip2CompressorOutputStream bzipOut = new BZip2CompressorOutputStream(baos);

		// Try to read it back in
		ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
		BZip2CompressorInputStream bzipIn = new BZip2CompressorInputStream(bais);
		byte[] buffer = new byte[1024];
		// Works fine
		Assert.assertEquals(1024,, 0, 1024));
		// Fails, returns -1 (indicating the stream is complete rather than that the buffer 
		// was full)
		Assert.assertEquals(0,, 1024, 0));
		// But if you change the above expected value to -1, the following line still works
		Assert.assertEquals(1024,, 0, 1024));

This message was sent by Atlassian JIRA

View raw message