jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageWriter.java
--- a/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageWriter.java Wed Dec 02 00:34:35 2015 +0530
+++ b/jdk/src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageWriter.java Wed Dec 02 00:47:36 2015 +0530
@@ -193,7 +193,17 @@
// Return to end of chunk and flush to minimize buffering
stream.seek(pos);
- stream.flushBefore(pos);
+ try {
+ stream.flushBefore(pos);
+ } catch (IOException e) {
+ /*
+ * If flushBefore() fails we try to access startPos in finally
+ * block of write_IDAT(). We should update startPos to avoid
+ * IndexOutOfBoundException while seek() is happening.
+ */
+ this.startPos = stream.getStreamPosition();
+ throw e;
+ }
}
public int read() throws IOException {