diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java index c8c7b7d2..2a152f92 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReader.java @@ -173,19 +173,7 @@ public final class JPEGImageReader extends ImageReaderBase { private boolean isLossless() throws IOException { assertInput(); - try { - if (getSOF().marker == JPEG.SOF3) { - return true; - } - } - catch (IIOException e) { - // May happen if no SOF is found, in case we'll just fall through - if (DEBUG) { - e.printStackTrace(); - } - } - - return false; + return getSOF().marker == JPEG.SOF3; } @Override diff --git a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java index 350f7384..35e4805f 100644 --- a/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java +++ b/imageio/imageio-jpeg/src/main/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGSegmentImageInputStream.java @@ -572,12 +572,17 @@ final class JPEGSegmentImageInputStream extends ImageInputStreamImpl { @Override public int read(final ImageInputStream stream) { - return data[pos++] & 0xff; + return data.length > pos ? data[pos++] & 0xff : -1; } @Override public int read(final ImageInputStream stream, byte[] b, int off, int len) { - int length = Math.min(data.length - pos, len); + int dataLeft = data.length - pos; + if (dataLeft <= 0) { + return -1; + } + + int length = Math.min(dataLeft, len); System.arraycopy(data, pos, b, off, length); pos += length; diff --git a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java index 64b0d300..3002c390 100644 --- a/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java +++ b/imageio/imageio-jpeg/src/test/java/com/twelvemonkeys/imageio/plugins/jpeg/JPEGImageReaderTest.java @@ -61,6 +61,8 @@ import java.util.List; import java.util.*; import static com.twelvemonkeys.imageio.util.IIOUtil.lookupProviderByName; +import static org.hamcrest.CoreMatchers.allOf; +import static org.hamcrest.CoreMatchers.containsString; import static org.hamcrest.MatcherAssert.assertThat; import static org.junit.Assert.*; import static org.junit.Assume.assumeNoException; @@ -1959,4 +1961,36 @@ public class JPEGImageReaderTest extends ImageReaderAbstractTest