<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Please add a *public* evaluation to the bug report. I will look at
    it more then ..<br>
    <br>
    -phil.<br>
    <br>
    On 11/6/15, 2:20 AM, Jayathirth D V wrote:
    <blockquote cite="mid:48666932-8fbd-4588-9175-07acdd24d78b@default"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      <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;
        color:black;}
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;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@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]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span style="color:windowtext">Hi Prasanta,<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext">As
            discussed, only in case of write_IDAT there is finally block
            which calls ios.finish() which internally calls seek() with
            improper startPos. In other cases we are not trying to
            access improper startPos because there is no call to
            ios.finish(). We can verify this behavior by changing logic
            where we throw IOException in test case.<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext">And I have
            modified test to not catch IOBE as per your suggestion.
            Please find updated Webrev link:<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext"><a
              moz-do-not-send="true"
              href="http://cr.openjdk.java.net/%7Erchamyal/jay/6967419/webrev.01/"><span
                style="color:windowtext">http://cr.openjdk.java.net/~rchamyal/jay/6967419/webrev.01/</span></a><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext">Thanks,<o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:windowtext">Jay</span><span
            style="color:windowtext"><o:p></o:p></span></p>
        <p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
        <div>
          <div style="border:none;border-top:solid #E1E1E1
            1.0pt;padding:3.0pt 0in 0in 0in">
            <p class="MsoNormal"><b><span style="color:windowtext">From:</span></b><span
                style="color:windowtext"> prasanta sadhukhan <br>
                <b>Sent:</b> Friday, November 06, 2015 2:45 PM<br>
                <b>To:</b> Jayathirth D V; <a class="moz-txt-link-abbreviated" href="mailto:2d-dev@openjdk.java.net">2d-dev@openjdk.java.net</a><br>
                <b>Cc:</b> Philip Race<br>
                <b>Subject:</b> Re: Review request for JDK-6967419 :
                IndexOutOfBoundsException when drawing PNGs<o:p></o:p></span></p>
          </div>
        </div>
        <p class="MsoNormal"><o:p> </o:p></p>
        <p class="MsoNormal">Hi Jay,<br>
          <br>
          looks ok but<br>
          I guess you need to do the same for finish() method too in
          similar way you did for finishChunk() as finish() is called
          from write_IHDR, write_CHRM etc and it calls flushBefore().<br>
          Also, I guess you should not consume IOB Exception and let it
          be thrown to user instead of RuntimeException after catching
          IOBE.<br>
          <br>
          Regards<br>
          Prasanta<span style="font-size:12.0pt"><o:p></o:p></span></p>
        <div>
          <p class="MsoNormal">On 11/5/2015 5:25 PM, Jayathirth D V
            wrote:<o:p></o:p></p>
        </div>
        <blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
          <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 : <a moz-do-not-send="true"
              href="https://bugs.openjdk.java.net/browse/JDK-6967419">https://bugs.openjdk.java.net/browse/JDK-6967419</a><o:p></o:p></p>
          <p class="MsoNormal"> <o:p></o:p></p>
          <p class="MsoNormal">Webrev : <a moz-do-not-send="true"
              href="http://cr.openjdk.java.net/%7Erchamyal/jay/6967419/webrev.00/">http://cr.openjdk.java.net/~rchamyal/jay/6967419/webrev.00/</a><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>
        </blockquote>
        <p class="MsoNormal"><span
            style="font-size:12.0pt;font-family:"Times New
            Roman",serif"><o:p> </o:p></span></p>
      </div>
    </blockquote>
  </body>
</html>