< prev index next >
src/java.desktop/share/classes/com/sun/imageio/plugins/png/PNGImageWriter.java
Print this page
@@ -191,11 +191,21 @@
stream.seek(startPos);
stream.writeInt((int)(pos - startPos) - 12);
// Return to end of chunk and flush to minimize buffering
stream.seek(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 {
throw new RuntimeException("Method not available");
}
< prev index next >