<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>33747</bug_id>
          
          <creation_ts>2010-01-15 16:14:32 -0800</creation_ts>
          <short_desc>Handle broken images more correctly in the open-source image decoders</short_desc>
          <delta_ts>2010-01-26 18:26:38 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Images</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Kasting">pkasting</reporter>
          <assigned_to name="Peter Kasting">pkasting</assigned_to>
          <cc>agl</cc>
    
    <cc>eric</cc>
    
    <cc>hamaji</cc>
    
    <cc>levin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>181424</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-15 16:14:32 -0800</bug_when>
    <thetext>Bug 32176 fixed a problem where, if an image decoder failed to allocate a buffer for the decoded data, we could later attempt to access the (nonexistent) buffer.  It did this by preventing the access.

The problem with this solution is that the original bug was created when I did the wrong thing while refactoring image decoding code, and in solving my bug, the patch on bug 32176 prevented the display of images which had been partially decoded before failing.

I was wrong to make ImageDecoder::size() ASSERT(!m_failed), since, like all other ImageDecoder functions, the state of the decoder is consistent even when decoding has failed, and it&apos;s perfectly valid to ask for the size.  I was also wrong to make RGBA32Buffer::setSize() set the frame status to FrameComplete on allocation failure, because the frame isn&apos;t complete, it&apos;s unallocated, and thus the existing FrameEmpty state is actually correct.

Fixing these two issues causes bug 32176 to disappear on its own, because ImageSource is already smart enough not to return pointers to frames with status FrameEmpty.  And removing the isSizeAvailable() check added in that bug allows us to (correctly) return non-NULL pointers for cases where the frame is _not_ empty but decoding has failed, thus at least displaying a partial image in some cases.  (If the error occurs after all the pixel data has appeared, then to the user things appear to be completely successful.)

Note that if we were to continue down the path of bug 32176, we&apos;d also need to begin worrying about the other kinds of queries that can be made to an ImageSource when decoding has failed, that might have tripped the ASSERT() in ImageDecoder::size().  Safing these would be annoying, and it&apos;s totally unnecessary.

Patch coming momentarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181427</commentid>
    <comment_count>1</comment_count>
      <attachid>46716</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-15 16:20:18 -0800</bug_when>
    <thetext>Created attachment 46716
patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181713</commentid>
    <comment_count>2</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-17 20:06:38 -0800</bug_when>
    <thetext>It seems the title of this bug wasn&apos;t good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181728</commentid>
    <comment_count>3</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-17 21:38:59 -0800</bug_when>
    <thetext>Why did you remove Adam and Eric, when they were the people on bug 32176?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181731</commentid>
    <comment_count>4</comment_count>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-01-17 21:56:38 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Why did you remove Adam and Eric, when they were the people on bug 32176?

I think you put their email addresses in the subject of this bug. But sorry, I must put them into the CC list when I changed the subject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>181845</commentid>
    <comment_count>5</comment_count>
    <who name="Adam Langley">agl</who>
    <bug_when>2010-01-18 06:03:50 -0800</bug_when>
    <thetext>LGTM. (Note, I am not a WebKit reviewer. You also need a real review.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182154</commentid>
    <comment_count>6</comment_count>
      <attachid>46716</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-18 23:34:07 -0800</bug_when>
    <thetext>Comment on attachment 46716
patch v1

What does this do, and why?  How do we test it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182312</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-19 10:47:47 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 46716 [details])
&gt; What does this do, and why?

Comment 0 explained this in detail, was part of it unclear?

&gt; How do we test it?

There is already a test in the tree (added as part of bug 32176) that we can handle invalid images without crashing.  I could perhaps add a pixel test for an invalid but mostly-decodable BMP (with different expected results for Safari and Chromium) although it would be easier to make a small tweak to my pre-existing Chromium-side image decoder tests to check the buffer output in cases where the image partially decoded.  That&apos;s about a one-line change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184465</commentid>
    <comment_count>8</comment_count>
      <attachid>46716</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-25 18:36:17 -0800</bug_when>
    <thetext>Comment on attachment 46716
patch v1

I really don&apos;t know who should review this simple patch.  I&apos;m confused, even with your explanation in comment 0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184801</commentid>
    <comment_count>9</comment_count>
      <attachid>46716</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-01-26 15:57:04 -0800</bug_when>
    <thetext>Comment on attachment 46716
patch v1

&gt; Index: WebCore/ChangeLog
&gt; ===================================================================
&gt; --- WebCore/ChangeLog	(revision 53348)
&gt; +++ WebCore/ChangeLog	(working copy)
&gt; @@ -1,3 +1,19 @@
&gt; +2010-01-15  Peter Kasting  &lt;pkasting@google.com&gt;
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        Handle broken images more correctly in the open-source image decoders.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=33747
&gt; +

There should be either be tests in this patch or a note about why there are no tests.

&gt; +        * platform/graphics/ImageSource.cpp:
&gt; +        (WebCore::ImageSource::createFrameAtIndex):

It is nice to add per function level comments when possible. For example, for this function you might say:

Removed a condition added to avoid calling size because it is now always ok to call size here.


&gt; +        * platform/image-decoders/ImageDecoder.h:
&gt; +        (WebCore::ImageDecoder::size):
&gt; +        * platform/image-decoders/qt/RGBA32BufferQt.cpp:
&gt; +        (WebCore::RGBA32Buffer::setSize):
&gt; +        * platform/image-decoders/skia/ImageDecoderSkia.cpp:
&gt; +        (WebCore::RGBA32Buffer::setSize):
&gt; +</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184816</commentid>
    <comment_count>10</comment_count>
      <attachid>47459</attachid>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-26 16:21:48 -0800</bug_when>
    <thetext>Created attachment 47459
patch v2

I don&apos;t think a patch should be r-ed because the reviewer doesn&apos;t think the ChangeLog has enough detail (why not r+ and ask me to fix?), but whatever.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184818</commentid>
    <comment_count>11</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-01-26 16:29:34 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=47459) [details]
&gt; patch v2
&gt; 
&gt; I don&apos;t think a patch should be r-ed 

It was r- for lack of a test. This is pretty typical and is expected of WebKit reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184822</commentid>
    <comment_count>12</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-01-26 16:35:21 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; Created an attachment (id=47459) [details] [details]
&gt; &gt; patch v2
&gt; &gt; 
&gt; &gt; I don&apos;t think a patch should be r-ed 
&gt; 
&gt; It was r- for lack of a test. This is pretty typical and is expected of WebKit
&gt; reviewers.

Oh sorry. I missed that the test issue was discussed in the comments of the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184826</commentid>
    <comment_count>13</comment_count>
      <attachid>47459</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-01-26 16:44:42 -0800</bug_when>
    <thetext>Comment on attachment 47459
patch v2

Very minor nit: It would be nice to wrap the comments in the ChangeLog (one of the few places where WebKit seems to try to maintain ~80 columns) and add periods.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184889</commentid>
    <comment_count>14</comment_count>
    <who name="Peter Kasting">pkasting</who>
    <bug_when>2010-01-26 18:26:38 -0800</bug_when>
    <thetext>Fixed in 53884.  Scrolling through ChangeLog I didn&apos;t see any pattern of sticking to 80 columns, but I did add periods on my comments.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46716</attachid>
            <date>2010-01-15 16:20:18 -0800</date>
            <delta_ts>2010-01-26 16:21:48 -0800</delta_ts>
            <desc>patch v1</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>3449</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzM0OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDEtMTUgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEhhbmRsZSBicm9rZW4gaW1hZ2VzIG1vcmUgY29ycmVjdGx5IGluIHRoZSBvcGVuLXNvdXJjZSBp
bWFnZSBkZWNvZGVycy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzNzQ3CisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9JbWFnZVNvdXJjZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZVNvdXJjZTo6Y3JlYXRlRnJhbWVBdEluZGV4KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkltYWdlRGVjb2Rlcjo6c2l6ZSk6CisgICAgICAgICogcGxhdGZvcm0vaW1h
Z2UtZGVjb2RlcnMvcXQvUkdCQTMyQnVmZmVyUXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UkdC
QTMyQnVmZmVyOjpzZXRTaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9z
a2lhL0ltYWdlRGVjb2RlclNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVy
OjpzZXRTaXplKToKKwogMjAxMC0wMS0xNSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgTm8gcmV2aWV3LCByb2xsaW5nIG91dCByNTMzNDQuCkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkocmV2aXNpb24gNTMzNDApCisrKyBX
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTI4LDcgKzEyOCw3IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFt
ZUEKIAogICAgIC8vIFplcm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNv
bWUgcG9ydHMuICBJZiB3ZSBoYXZlIGFuCiAgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBq
dXN0IGJhaWwuCi0gICAgaWYgKCFpc1NpemVBdmFpbGFibGUoKSB8fCBzaXplKCkuaXNFbXB0eSgp
KQorICAgIGlmIChzaXplKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8v
IFJldHVybiB0aGUgYnVmZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUg
cG9ydHMsIHRoZSBkYXRhCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0lt
YWdlRGVjb2Rlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2Rl
cnMvSW1hZ2VEZWNvZGVyLmgJKHJldmlzaW9uIDUzMzQwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9p
bWFnZS1kZWNvZGVycy9JbWFnZURlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDggKzIz
Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyB0aGUgc2l6ZSBv
ZiB0aGUgaW1hZ2UuCiAgICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QKICAgICAg
ICAgewotICAgICAgICAgICAgLy8gUmVxdWVzdGluZyB0aGUgc2l6ZSBvZiBhbiBpbnZhbGlkIGJp
dG1hcCBpcyBtZWFuaW5nbGVzcy4KLSAgICAgICAgICAgIEFTU0VSVCghbV9mYWlsZWQpOwogICAg
ICAgICAgICAgcmV0dXJuIG1fc2l6ZTsKICAgICAgICAgfQogCkluZGV4OiBXZWJDb3JlL3BsYXRm
b3JtL2ltYWdlLWRlY29kZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcAkocmV2
aXNpb24gNTMzNDApCisrKyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L1JHQkEz
MkJ1ZmZlclF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODMsMTEgKzgzLDggQEAgYm9vbCBSR0JB
MzJCdWZmZXI6OnNldFNpemUoaW50IG5ld1dpZHRoLAogCiAgICAgbV9zaXplID0gSW50U2l6ZShu
ZXdXaWR0aCwgbmV3SGVpZ2h0KTsKICAgICBtX2ltYWdlID0gUUltYWdlKG5ld1dpZHRoLCBuZXdI
ZWlnaHQsIFFJbWFnZTo6Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKLSAgICBpZiAobV9p
bWFnZS5pc051bGwoKSkgewotICAgICAgICAvLyBBbGxvY2F0aW9uIGZhaWx1cmUsIG1heWJlIHRo
ZSBiaXRtYXAgd2FzIHRvbyBiaWcuCi0gICAgICAgIHNldFN0YXR1cyhGcmFtZUNvbXBsZXRlKTsK
KyAgICBpZiAobV9pbWFnZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0K
IAogICAgIC8vIFplcm8gdGhlIGltYWdlLgogICAgIHplcm9GaWxsKCk7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2Rl
clNraWEuY3BwCShyZXZpc2lvbiA1MzM0MCkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVj
b2RlcnMvc2tpYS9JbWFnZURlY29kZXJTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEg
KzY3LDggQEAgYm9vbCBSR0JBMzJCdWZmZXI6OnNldFNpemUoaW50IG5ld1dpZHRoLAogICAgIC8v
IG90aGVyd2lzZS4KICAgICBBU1NFUlQod2lkdGgoKSA9PSAwICYmIGhlaWdodCgpID09IDApOwog
ICAgIG1fYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dp
ZHRoLCBuZXdIZWlnaHQpOwotICAgIGlmICghbV9iaXRtYXAuYWxsb2NQaXhlbHMoKSkgewotICAg
ICAgICAvLyBBbGxvY2F0aW9uIGZhaWx1cmUsIG1heWJlIHRoZSBiaXRtYXAgd2FzIHRvbyBiaWcu
Ci0gICAgICAgIHNldFN0YXR1cyhGcmFtZUNvbXBsZXRlKTsKKyAgICBpZiAoIW1fYml0bWFwLmFs
bG9jUGl4ZWxzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICAvLyBaZXJv
IHRoZSBpbWFnZS4KICAgICB6ZXJvRmlsbCgpOwo=
</data>
<flag name="review"
          id="29022"
          type_id="1"
          status="-"
          setter="levin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47459</attachid>
            <date>2010-01-26 16:21:48 -0800</date>
            <delta_ts>2010-01-26 16:44:42 -0800</delta_ts>
            <desc>patch v2</desc>
            <filename>patch2</filename>
            <type>text/plain</type>
            <size>4004</size>
            <attacher name="Peter Kasting">pkasting</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTAtMDEtMjYgIFBldGVyIEthc3RpbmcgIDxwa2FzdGluZ0Bnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpCisKKyAgICAgICAg
SGFuZGxlIGJyb2tlbiBpbWFnZXMgbW9yZSBjb3JyZWN0bHkgaW4gdGhlIG9wZW4tc291cmNlIGlt
YWdlIGRlY29kZXJzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MzM3NDcKKworICAgICAgICBObyB0ZXN0cyBzaW5jZSBTYWZhcmkgZG9lc24ndCB1c2Ug
dGhlc2UgZGVjb2RlcnMgYW5kIHRoZXJlJ3MgYWxyZWFkeSBhCisgICAgICAgIGJyb2tlbi1pbWFn
ZSB0ZXN0IGluIHRoZSB0cmVlLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VT
b3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VTb3VyY2U6OmNyZWF0ZUZyYW1lQXRJ
bmRleCk6IE5vIG5lZWQgdG8gY2hlY2sgaXNTaXplQXZhaWxhYmxlKCkgc2luY2Ugc2l6ZSgpIGlz
IG5vdyBhbHdheXMgc2FmZQorICAgICAgICAqIHBsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdl
RGVjb2Rlci5oOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VEZWNvZGVyOjpzaXplKTogRG9uJ3Qg
YXNzZXJ0IHRoYXQgdGhlIGJpdG1hcCBpcyB2YWxpZDsgd2UgZG9uJ3QgbmVlZCBhIGNvbXBsZXRl
IHN1Y2Nlc3NmdWwgZGVjb2RlIHRvIGJlIGFibGUgdG8gZ2l2ZSBpbmZvIGFib3V0IHRoZSBzaXpl
CisgICAgICAgICogcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvcXQvUkdCQTMyQnVmZmVyUXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjpzZXRTaXplKTogRG9uJ3Qgc2V0IHRo
ZSBmcmFtZSB0byBjb21wbGV0ZSBvbiBmYWlsdXJlLCBzaW5jZSBpdCdzIG5vdCBjb21wbGV0ZSwg
YnV0IGVtcHR5LCBhbmQgY2FsbGVycyBjYW4gYmV0dGVyIGhhbmRsZSBlbXB0eSBmcmFtZXMKKyAg
ICAgICAgKiBwbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UkdCQTMyQnVmZmVyOjpzZXRTaXplKTogRG9uJ3Qgc2V0IHRo
ZSBmcmFtZSB0byBjb21wbGV0ZSBvbiBmYWlsdXJlLCBzaW5jZSBpdCdzIG5vdCBjb21wbGV0ZSwg
YnV0IGVtcHR5LCBhbmQgY2FsbGVycyBjYW4gYmV0dGVyIGhhbmRsZSBlbXB0eSBmcmFtZXMKKwog
MjAxMC0wMS0yNiAgQWRhbSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgTm8g
cmV2aWV3LCByb2xsaW5nIG91dCByNTM4NjEuCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0ltYWdlU291cmNlLmNwcAkocmV2aXNpb24gNTM4NjkpCisrKyBXZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0ltYWdlU291cmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI4LDcgKzEyOCw3
IEBAIE5hdGl2ZUltYWdlUHRyIEltYWdlU291cmNlOjpjcmVhdGVGcmFtZUEKIAogICAgIC8vIFpl
cm8taGVpZ2h0IGltYWdlcyBjYW4gY2F1c2UgcHJvYmxlbXMgZm9yIHNvbWUgcG9ydHMuICBJZiB3
ZSBoYXZlIGFuCiAgICAgLy8gZW1wdHkgaW1hZ2UgZGltZW5zaW9uLCBqdXN0IGJhaWwuCi0gICAg
aWYgKCFpc1NpemVBdmFpbGFibGUoKSB8fCBzaXplKCkuaXNFbXB0eSgpKQorICAgIGlmIChzaXpl
KCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIFJldHVybiB0aGUgYnVm
ZmVyIGNvbnRlbnRzIGFzIGEgbmF0aXZlIGltYWdlLiAgRm9yIHNvbWUgcG9ydHMsIHRoZSBkYXRh
CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL0ltYWdlRGVjb2Rlci5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvSW1hZ2VEZWNvZGVy
LmgJKHJldmlzaW9uIDUzODY5KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9J
bWFnZURlY29kZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDggKzIzNyw2IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgLy8gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UuCiAg
ICAgICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkgY29uc3QKICAgICAgICAgewotICAgICAgICAg
ICAgLy8gUmVxdWVzdGluZyB0aGUgc2l6ZSBvZiBhbiBpbnZhbGlkIGJpdG1hcCBpcyBtZWFuaW5n
bGVzcy4KLSAgICAgICAgICAgIEFTU0VSVCghbV9mYWlsZWQpOwogICAgICAgICAgICAgcmV0dXJu
IG1fc2l6ZTsKICAgICAgICAgfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29k
ZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3Jt
L2ltYWdlLWRlY29kZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcAkocmV2aXNpb24gNTM4NjkpCisr
KyBXZWJDb3JlL3BsYXRmb3JtL2ltYWdlLWRlY29kZXJzL3F0L1JHQkEzMkJ1ZmZlclF0LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtODMsMTEgKzgzLDggQEAgYm9vbCBSR0JBMzJCdWZmZXI6OnNldFNp
emUoaW50IG5ld1dpZHRoLAogCiAgICAgbV9zaXplID0gSW50U2l6ZShuZXdXaWR0aCwgbmV3SGVp
Z2h0KTsKICAgICBtX2ltYWdlID0gUUltYWdlKG5ld1dpZHRoLCBuZXdIZWlnaHQsIFFJbWFnZTo6
Rm9ybWF0X0FSR0IzMl9QcmVtdWx0aXBsaWVkKTsKLSAgICBpZiAobV9pbWFnZS5pc051bGwoKSkg
ewotICAgICAgICAvLyBBbGxvY2F0aW9uIGZhaWx1cmUsIG1heWJlIHRoZSBiaXRtYXAgd2FzIHRv
byBiaWcuCi0gICAgICAgIHNldFN0YXR1cyhGcmFtZUNvbXBsZXRlKTsKKyAgICBpZiAobV9pbWFn
ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KIAogICAgIC8vIFplcm8g
dGhlIGltYWdlLgogICAgIHplcm9GaWxsKCk7CkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2ltYWdl
LWRlY29kZXJzL3NraWEvSW1hZ2VEZWNvZGVyU2tpYS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9wbGF0Zm9ybS9pbWFnZS1kZWNvZGVycy9za2lhL0ltYWdlRGVjb2RlclNraWEuY3BwCShyZXZp
c2lvbiA1Mzg2OSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vaW1hZ2UtZGVjb2RlcnMvc2tpYS9JbWFn
ZURlY29kZXJTa2lhLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjcsMTEgKzY3LDggQEAgYm9vbCBS
R0JBMzJCdWZmZXI6OnNldFNpemUoaW50IG5ld1dpZHRoLAogICAgIC8vIG90aGVyd2lzZS4KICAg
ICBBU1NFUlQod2lkdGgoKSA9PSAwICYmIGhlaWdodCgpID09IDApOwogICAgIG1fYml0bWFwLnNl
dENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIG5ld1dpZHRoLCBuZXdIZWlnaHQp
OwotICAgIGlmICghbV9iaXRtYXAuYWxsb2NQaXhlbHMoKSkgewotICAgICAgICAvLyBBbGxvY2F0
aW9uIGZhaWx1cmUsIG1heWJlIHRoZSBiaXRtYXAgd2FzIHRvbyBiaWcuCi0gICAgICAgIHNldFN0
YXR1cyhGcmFtZUNvbXBsZXRlKTsKKyAgICBpZiAoIW1fYml0bWFwLmFsbG9jUGl4ZWxzKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CiAKICAgICAvLyBaZXJvIHRoZSBpbWFnZS4KICAg
ICB6ZXJvRmlsbCgpOwo=
</data>
<flag name="review"
          id="29892"
          type_id="1"
          status="+"
          setter="levin"
    />
          </attachment>
      

    </bug>

</bugzilla>