<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link="#0563C1" vlink="#954F72"><div class=WordSection1><p class=MsoNormal>Hello All,<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Please review following fix in jdk9:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Bug : https://bugs.openjdk.java.net/browse/JDK-6967419<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Webrev : http://cr.openjdk.java.net/~rchamyal/jay/6967419/webrev.00/<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Bug : IndexOutOfBoundsException when drawing PNGs<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Root cause : When user intentionally throws IO Exception while write is happening. <br>                          We call ios.finish() in finally block of write_IDAT() which internally goes to finishChunk(). But the startPos of the chunk is still pointing to present IDAT chunk but flushedPos(streamPos) is pointing to end of  IDAT chunk. <br>                          So in finishChunk(), startPos will be less than flushedPos. This is causing IndexOutOfBoundException in stream.seek() and cache is not closed.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Solution : If IOException is thrown by user, catch the exception while write is happening and update startPos to streamPos. So that when seek() happens in finishChunk() we don’t see IndexOutOfBoundsException and cache is closed properly.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks,<o:p></o:p></p><p class=MsoNormal>Jay<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>