<?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>170432</bug_id>
          
          <creation_ts>2017-04-03 17:25:47 -0700</creation_ts>
          <short_desc>[GTK] GIF images are not properly loaded the first time</short_desc>
          <delta_ts>2018-07-13 00:45:01 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=187582</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>172020</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Alberto Lopez Perez">clopez</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bugs-noreply</cc>
    
    <cc>calvaris</cc>
    
    <cc>cgarcia</cc>
    
    <cc>fujii</cc>
    
    <cc>magomez</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>sabouhallawa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1293919</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-04-03 17:25:47 -0700</bug_when>
    <thetext>On WebKitGTK+ from trunk r214853 I see that GIF Images are not properly loaded the first time:

Running the minibrowser like this, always produces a small square image indicating fail to load rather than showing the cats:

HOME=$(mktemp -d) Tools/Scripts/run-minibrowser --gtk https://trac.webkit.org/export/214855/webkit/trunk/LayoutTests/svg/hixie/perf/resources/smallcats.gif


Notice the HOME=$(mktemp -d) which sees a temporal home before executing the browser (this is required to reproduce the bug)

Hitting reload doesn&apos;t fix the issue.

However, if I opening a new tab on the minibrowser and load the URL on the new tab, then the image is displayed as expected-

So it looks like a cache issue somewhere, like if it failed to pass the image data the first time the image is loaded.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293921</commentid>
    <comment_count>1</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-04-03 17:27:54 -0700</bug_when>
    <thetext>Note: the issue is not reproducible with png or jpg. Only happens with gif (both animated or static)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1293928</commentid>
    <comment_count>2</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-04-03 17:34:17 -0700</bug_when>
    <thetext>(In reply to Carlos Alberto Lopez Perez from comment #0)
&gt; Notice the HOME=$(mktemp -d) which sees a temporal home before executing the
&gt; browser (this is required to reproduce the bug)

I think it&apos;s required to reproduce if you&apos;ve loaded the image before, because it works once it&apos;s cached. The problem is if it&apos;s not cached yet. Just loading that image in Epiphany failed for me the first time I clicked the link, but it works fine now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307232</commentid>
    <comment_count>3</comment_count>
      <attachid>309704</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-11 03:50:11 -0700</bug_when>
    <thetext>Created attachment 309704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307243</commentid>
    <comment_count>4</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-05-11 05:37:42 -0700</bug_when>
    <thetext>Really awesome!

But do you know why is this not a problem for the CG decoder?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307244</commentid>
    <comment_count>5</comment_count>
      <attachid>309704</attachid>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2017-05-11 05:38:28 -0700</bug_when>
    <thetext>Comment on attachment 309704
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=309704&amp;action=review

Amazing!

&gt; Source/WebCore/platform/graphics/ImageFrameCache.cpp:482
&gt; +#if !USE(CG)
&gt; +    if (m_frames.isEmpty() &amp;&amp; isDecoderAvailable())
&gt; +        return m_decoder-&gt;size();
&gt; +#endif

I think we should add a comment here briefly mentioning the tricky issue explained on the changelog for the next developer that touches this code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307245</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-11 05:53:34 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #4)
&gt; Really awesome!
&gt; 
&gt; But do you know why is this not a problem for the CG decoder?

I guess CG decoder doesn&apos;t claim to know the size until it has (at least partially) decoded the first frame, but I have no idea.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307251</commentid>
    <comment_count>7</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-05-11 06:25:21 -0700</bug_when>
    <thetext>OK... let&apos;s wait a day before committing to see if Said has any comments. And I agree with Carlos Lopez, this is really tricky and it&apos;s important to add a comment to explain what&apos;s going on here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307253</commentid>
    <comment_count>8</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-11 06:27:51 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #7)
&gt; OK... let&apos;s wait a day before committing to see if Said has any comments.
&gt; And I agree with Carlos Lopez, this is really tricky and it&apos;s important to
&gt; add a comment to explain what&apos;s going on here.

Sure!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307260</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2017-05-11 07:27:58 -0700</bug_when>
    <thetext>Wait, we surely need a test for this, right? Did this really not break any existing tests? If it needs a network situation then we could try to reproduce it using an HTTP-based test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307786</commentid>
    <comment_count>10</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-11 23:09:29 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #9)
&gt; Wait, we surely need a test for this, right? Did this really not break any
&gt; existing tests? If it needs a network situation then we could try to
&gt; reproduce it using an HTTP-based test?

I&apos;m not sure if we need some real network latency to reproduce this, I&apos;ll try to make a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307808</commentid>
    <comment_count>11</comment_count>
      <attachid>309879</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-12 00:32:31 -0700</bug_when>
    <thetext>Created attachment 309879
Patch for landing

It was easy to reproduce the issue with load-and-stall.php :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307838</commentid>
    <comment_count>12</comment_count>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2017-05-12 03:14:07 -0700</bug_when>
    <thetext>WinCairo port can&apos;t show all GIF from http: due to this bug but from file:.
I think it&apos;s because curl port uses small buffer size.

BTW, I have a question. Looking at the source code comment
in Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:

&gt;        case GIFGlobalHeader: {
&gt;            // This is the height and width of the &quot;screen&quot; or frame into which images are rendered. The
&gt;            // individual images can be smaller than the screen size and located with an origin anywhere
&gt;            // within the screen.
&gt;            m_screenWidth = GETINT16(currentComponent);
&gt;            m_screenHeight = GETINT16(currentComponent + 2);
&gt;
&gt;            // CALLBACK: Inform the decoderplugin of our size.
&gt;            // Note: A subsequent frame might have dimensions larger than the &quot;screen&quot; dimensions.
&gt;            if (m_client &amp;&amp; !m_client-&gt;setSize(WebCore::IntSize(m_screenWidth, m_screenHeight)))
&gt;                return false;

It seems that decoder&apos;s size is the screen size.

Real individual image size seems the size specified in GIFImageDecoder::initFrameBuffer.

&gt;    buffer-&gt;backingStore()-&gt;setFrameRect(IntRect(left, top, right - left, bottom - top));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307840</commentid>
    <comment_count>13</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-12 03:25:01 -0700</bug_when>
    <thetext>(In reply to Fujii Hironori from comment #12)
&gt; WinCairo port can&apos;t show all GIF from http: due to this bug but from file:.
&gt; I think it&apos;s because curl port uses small buffer size.
&gt; 
&gt; BTW, I have a question. Looking at the source code comment
&gt; in Source/WebCore/platform/image-decoders/gif/GIFImageReader.cpp:
&gt; 
&gt; &gt;        case GIFGlobalHeader: {
&gt; &gt;            // This is the height and width of the &quot;screen&quot; or frame into which images are rendered. The
&gt; &gt;            // individual images can be smaller than the screen size and located with an origin anywhere
&gt; &gt;            // within the screen.
&gt; &gt;            m_screenWidth = GETINT16(currentComponent);
&gt; &gt;            m_screenHeight = GETINT16(currentComponent + 2);
&gt; &gt;
&gt; &gt;            // CALLBACK: Inform the decoderplugin of our size.
&gt; &gt;            // Note: A subsequent frame might have dimensions larger than the &quot;screen&quot; dimensions.
&gt; &gt;            if (m_client &amp;&amp; !m_client-&gt;setSize(WebCore::IntSize(m_screenWidth, m_screenHeight)))
&gt; &gt;                return false;
&gt; 
&gt; It seems that decoder&apos;s size is the screen size.
&gt; 
&gt; Real individual image size seems the size specified in
&gt; GIFImageDecoder::initFrameBuffer.
&gt; 
&gt; &gt;    buffer-&gt;backingStore()-&gt;setFrameRect(IntRect(left, top, right - left, bottom - top));

I don&apos;t think there&apos;s any problem, because we are not caching that size, when frames are available, the actual frame sizes will be used instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307841</commentid>
    <comment_count>14</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2017-05-12 03:29:59 -0700</bug_when>
    <thetext>Committed r216758: &lt;http://trac.webkit.org/changeset/216758&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309704</attachid>
            <date>2017-05-11 03:50:11 -0700</date>
            <delta_ts>2017-05-12 00:32:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>wk-partial-gif-decoding.diff</filename>
            <type>text/plain</type>
            <size>2782</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAzYWY5YWYwNGZiNi4uMDIyYmFiZTFlN2QgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNiBAQAorMjAxNy0wNS0xMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGln
YWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gR0lGIGltYWdlcyBhcmUgbm90IHByb3Blcmx5IGxv
YWRlZCB0aGUgZmlyc3QgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTcwNDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgV2hlbiB0aGUgR0lGIGltYWdlIGlzIGxvYWRlZCBmb3IgdGhlIGZpcnN0IHRp
bWUsIGl0J3MgYWx3YXlzIHJlYWQgZnJvbSB0aGUgbmV0d29yaywgYW5kIHRoZSBkZWNvZGVyIGlz
IHVzdWFsbHkKKyAgICAgICAgZmV0Y2hlZCB3aXRoIGNodW5rcyBvZiBkYXRhLiBUaGVuIHRoZSBk
YXRhIGlzIGNhY2hlZCBpbiBkaXNrIGJ5IHRoZSBuZXR3b3JrIHByb2Nlc3MsIHNvIHRoYXQgd2hl
biBsb2FkZWQgZnJvbQorICAgICAgICB0aGUgY2FjaGUsIHRoZSB3aG9sZSBlbmNvZGVkIGRhdGEg
aXMgYXZhaWxhYmxlIHRvIGZldGNoIHRoZSBlbmNvZGVyLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHdl
IGFyZSBmYWlsaW5nIHRvCisgICAgICAgIGRlY29kZSB0aGUgaW1hZ2Ugd2hlbiBnaXZpbmcgY2h1
bmtzIG9mIGRhdGEsIHRoYXQncyB3aHkgaXQgb25seSBoYXBwZW5zIHRoZSBmaXJzdCB0aW1lIGxv
YWRlZC4gSWYgdGhlIGZpcnN0CisgICAgICAgIGNodW5rIG9mIGRhdGEgcHJvdmlkZWQgaXMgZW5v
dWdoIHRvIGdldCBzb21lIG1ldGFkYXRhLCBpbmNsdWRpbmcgdGhlIHNpemUsIGJ1dCBub3QgZnJh
bWUgY29udGVudHMsIHRoZSBsb2FkIGZhaWxzCisgICAgICAgIGluIENhY2hlZEltYWdlOjphZGRJ
bmNyZW1lbnRhbERhdGFCdWZmZXIoKSBiZWNhdXNlIHRoZSBFbmNvZGVkRGF0YVN0YXR1cyByZXBv
cnRlZCBpcyBTaXplQXZhaWxhYmxlIGJ1dAorICAgICAgICBJbWFnZTo6aXNOdWxsKCkgcmV0dXJu
cyB0cnVlLiBBbiBJbWFnZSBpcyBjb25zaWRlcmVkIHRvIGJlIE51bGwgd2hlbiBpdHMgc2l6ZSBp
cyBlbXB0eSwgYW5kIHRoZSBzaXplIGlzCisgICAgICAgIGNhbGN1bGF0ZWQgYWx3YXlzIHVzaW5n
IHRoZSBmaXJzdCBmcmFtZSBpbiBJbWFnZUZyYW1lQ2FjaGUuIFNpbmNlIHdlIHN0aWxsIGRvbid0
IGhhdmUgZnJhbWVzLCB0aGUgaW1hZ2UgaXMKKyAgICAgICAgYWx3YXlzIE51bGwgaW4gdGhpcyBj
YXNlLiBJdCBpcyBub3QgZXhwZWN0ZWQgdGhhdCBFbmNvZGVkRGF0YVN0YXR1cyByZXR1cm5zIFNp
emVBdmFpbGFibGUgYW5kIHRoZSBpbWFnZSBpcyBOdWxsLAorICAgICAgICB0aGF0J3Mgd2h5IGl0
J3MgY29uc2lkZXJlZCBhbiBlcnJvciBhbmQgdGhlIGxvYWQgZmluaXNoZXMgd2l0aCBhIGRlY29k
ZSBlcnJvci4gSG93ZXZlciwgdGhlIG5vbiBDRyBJbWFnZURlY29kZXIKKyAgICAgICAgaGFzIGEg
bV9zaXplIG1lbWJlciB0byBoYW5kbGUgdGhpcyBwYXJ0aWN1bGFyIGNhc2UsIGFuZCBpdCdzIHdo
ZW4gbV9zaXplIGlzIHNldCB3aGVuIEVuY29kZWREYXRhU3RhdHVzIGNoYW5nZXMKKyAgICAgICAg
dG8gU2l6ZUF2YWlsYWJsZS4gV2Ugc2hvdWxkIHJldHVybiB0aGUgSW1hZ2VFbmNvZGVyIHNpemUg
YXMgdGhlIEltYWdlU2l6ZSB3aGVuIHdlIGhhdmUgYSBkZWNvZGVyIGJ1dCBub3QgZnJhbWVzIHll
dC4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpJbWFnZUZyYW1lQ2FjaGU6OnNpemUpOiBSZXR1cm4gSW1hZ2VEZWNv
ZGVyOjpzaXplKCkgd2l0aG91dCBjYWNoaW5nIGl0LCBpZiBmcmFtZSBsaXN0IGlzIGVtcHR5Lgor
CiAyMDE3LTA1LTExICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAg
RHJvcCBjdXN0b20gYmluZGluZ3MgY29kZSBmb3IgSFRNTEZvcm1Db250cm9sc0NvbGxlY3Rpb24n
cyBuYW1lZCBwcm9wZXJ0eSBnZXR0ZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0ltYWdlRnJhbWVDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwCmluZGV4IGI0YjI4ZDQ0MDc4Li4wZTI0MWJm
OGJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZUNhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbWFn
ZUZyYW1lQ2FjaGUuY3BwCkBAIC00NzYsNiArNDc2LDEwIEBAIHN0ZDo6b3B0aW9uYWw8SW50UG9p
bnQ+IEltYWdlRnJhbWVDYWNoZTo6aG90U3BvdCgpCiAKIEludFNpemUgSW1hZ2VGcmFtZUNhY2hl
OjpzaXplKCkKIHsKKyNpZiAhVVNFKENHKQorICAgIGlmIChtX2ZyYW1lcy5pc0VtcHR5KCkgJiYg
aXNEZWNvZGVyQXZhaWxhYmxlKCkpCisgICAgICAgIHJldHVybiBtX2RlY29kZXItPnNpemUoKTsK
KyNlbmRpZgogICAgIHJldHVybiBmcmFtZU1ldGFkYXRhQXRJbmRleENhY2hlSWZOZWVkZWQ8SW50
U2l6ZT4oMCwgKCZJbWFnZUZyYW1lOjpzaXplKSwgJm1fc2l6ZSwgSW1hZ2VGcmFtZTo6Q2FjaGlu
Zzo6TWV0YWRhdGEsIFN1YnNhbXBsaW5nTGV2ZWw6OkRlZmF1bHQpOwogfQogCg==
</data>
<flag name="review"
          id="330878"
          type_id="1"
          status="+"
          setter="clopez"
    />
    <flag name="commit-queue"
          id="330881"
          type_id="3"
          status="-"
          setter="clopez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309879</attachid>
            <date>2017-05-12 00:32:31 -0700</date>
            <delta_ts>2017-05-12 00:32:31 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>wk-progressive-gif.diff</filename>
            <type>text/plain</type>
            <size>5697</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlM2E3MWRiNzEwYy4uZTBiYTM4Yjg1ZjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAor
MjAxNy0wNS0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CisK
KyAgICAgICAgW0dUS10gR0lGIGltYWdlcyBhcmUgbm90IHByb3Blcmx5IGxvYWRlZCB0aGUgZmly
c3QgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTcwNDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9zIEFsYmVydG8gTG9wZXogUGVyZXou
CisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2ltYWdlcy9naWYtcHJvZ3Jlc3NpdmUtbG9hZC1leHBl
Y3RlZC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rlc3RzL2ltYWdlcy9naWYtcHJvZ3Jl
c3NpdmUtbG9hZC5odG1sOiBBZGRlZC4KKwogMjAxNy0wNS0xMSAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmRlckltYWdlUmVzb3VyY2U6Omhhc0ltYWdlIGlz
IHJlZHVuZGFudCBhbmQgUmVuZGVySW1hZ2VSZXNvdXJjZVN0eWxlSW1hZ2UncyBvdmVycmlkZSBp
cyBpbmNvcnJlY3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9n
aWYtcHJvZ3Jlc3NpdmUtbG9hZC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbWFnZXMvZ2lmLXByb2dyZXNzaXZlLWxvYWQtZXhwZWN0ZWQuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNjllMGY1NzIzYzkKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9naWYtcHJvZ3Jlc3NpdmUtbG9hZC1leHBl
Y3RlZC5odG1sCkBAIC0wLDAgKzEsMjIgQEAKKzxpbWcgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6
IGJsdWUiID4KKzxzY3JpcHQ+CitpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAgICB0ZXN0UnVu
bmVyLndhaXRVbnRpbERvbmUoKTsKK30KKworZnVuY3Rpb24gdGVzdERvbmUoKQoreworICAgIGlm
ICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9
CisKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIC8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBH
SUYgbG9hZGluZyBkb2Vzbid0IGZhaWwgd2hlbiB0aGUgZmlyc3QgY2h1bmsgb2YgZGF0YSBkZWNv
ZGVkCisgICAgLy8gY29udGFpbnMgdGhlIG1ldGFkYXRhLCBidXQgbm90IGEgY29tcGxldGUgZnJh
bWUuIFNlZSB3ZWJraXQub3JnL2IvMTcwNDMyLgorICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Io
ImltZyIpLnNyYyA9ICJodHRwOi8vMTI3LjAuMC4xOjgwMDAvcGVybWlzc2lvbmNsaWVudC9yZXNv
dXJjZXMvYm9zdG9uLmdpZiI7CisgICAgc2V0VGltZW91dCh0ZXN0RG9uZSwgMTAwMCk7Cit9CisK
K3NldFRpbWVvdXQocnVuVGVzdCwgMCk7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW1hZ2VzL2dpZi1wcm9ncmVzc2l2ZS1sb2FkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2ltYWdlcy9naWYtcHJvZ3Jlc3NpdmUtbG9hZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4yZTRkOTk5N2ZmOAotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW1hZ2VzL2dpZi1wcm9ncmVzc2l2ZS1sb2Fk
Lmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGltZyBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogYmx1
ZSIgPgorPHNjcmlwdD4KK2lmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgIHRlc3RSdW5uZXIu
d2FpdFVudGlsRG9uZSgpOworfQorCitmdW5jdGlvbiBsb2FkQW5kU3RhbGwoKQoreworICAgIHJl
dHVybiAiaHR0cDovLzEyNy4wLjAuMTo4MDAwL3Jlc291cmNlcy9sb2FkLWFuZC1zdGFsbC5waHAi
OworfQorCitmdW5jdGlvbiBnaWZJbWFnZSgpCit7CisgICAgcmV0dXJuICI/bmFtZT0uLi9wZXJt
aXNzaW9uY2xpZW50L3Jlc291cmNlcy9ib3N0b24uZ2lmJm1pbWVUeXBlPWltYWdlJTJGZ2lmIjsK
K30KKworZnVuY3Rpb24gdGVzdERvbmUoKQoreworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICAgICAgdGVzdFJ1bm5lci5ub3RpZnlEb25lKCk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3Qo
KQoreworICAgIC8vIFRoaXMgdGVzdCBjaGVja3MgdGhhdCBHSUYgbG9hZGluZyBkb2Vzbid0IGZh
aWwgd2hlbiB0aGUgZmlyc3QgY2h1bmsgb2YgZGF0YSBkZWNvZGVkCisgICAgLy8gY29udGFpbnMg
dGhlIG1ldGFkYXRhLCBidXQgbm90IGEgY29tcGxldGUgZnJhbWUuIFNlZSB3ZWJraXQub3JnL2Iv
MTcwNDMyLgorICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoImltZyIpLnNyYyA9IGxvYWRBbmRT
dGFsbCgpICsgZ2lmSW1hZ2UoKSArICImc3RhbGxBdD01MTImc3RhbGxGb3I9MSI7CisgICAgc2V0
VGltZW91dCh0ZXN0RG9uZSwgMTUwMCk7Cit9CisKK3NldFRpbWVvdXQocnVuVGVzdCwgMCk7Cis8
L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0ZjBhZTBlMjg4ZS4uOTE5N2VmMGI0YmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNy0wNS0xMiAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dUS10gR0lGIGltYWdlcyBhcmUgbm90IHBy
b3Blcmx5IGxvYWRlZCB0aGUgZmlyc3QgdGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcwNDMyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2FybG9z
IEFsYmVydG8gTG9wZXogUGVyZXouCisKKyAgICAgICAgV2hlbiB0aGUgR0lGIGltYWdlIGlzIGxv
YWRlZCBmb3IgdGhlIGZpcnN0IHRpbWUsIGl0J3MgYWx3YXlzIHJlYWQgZnJvbSB0aGUgbmV0d29y
aywgYW5kIHRoZSBkZWNvZGVyIGlzIHVzdWFsbHkKKyAgICAgICAgZmV0Y2hlZCB3aXRoIGNodW5r
cyBvZiBkYXRhLiBUaGVuIHRoZSBkYXRhIGlzIGNhY2hlZCBpbiBkaXNrIGJ5IHRoZSBuZXR3b3Jr
IHByb2Nlc3MsIHNvIHRoYXQgd2hlbiBsb2FkZWQgZnJvbQorICAgICAgICB0aGUgY2FjaGUsIHRo
ZSB3aG9sZSBlbmNvZGVkIGRhdGEgaXMgYXZhaWxhYmxlIHRvIGZldGNoIHRoZSBlbmNvZGVyLiBU
aGUgcHJvYmxlbSBpcyB0aGF0IHdlIGFyZSBmYWlsaW5nIHRvCisgICAgICAgIGRlY29kZSB0aGUg
aW1hZ2Ugd2hlbiBnaXZpbmcgY2h1bmtzIG9mIGRhdGEsIHRoYXQncyB3aHkgaXQgb25seSBoYXBw
ZW5zIHRoZSBmaXJzdCB0aW1lIGxvYWRlZC4gSWYgdGhlIGZpcnN0CisgICAgICAgIGNodW5rIG9m
IGRhdGEgcHJvdmlkZWQgaXMgZW5vdWdoIHRvIGdldCBzb21lIG1ldGFkYXRhLCBpbmNsdWRpbmcg
dGhlIHNpemUsIGJ1dCBub3QgZnJhbWUgY29udGVudHMsIHRoZSBsb2FkIGZhaWxzCisgICAgICAg
IGluIENhY2hlZEltYWdlOjphZGRJbmNyZW1lbnRhbERhdGFCdWZmZXIoKSBiZWNhdXNlIHRoZSBF
bmNvZGVkRGF0YVN0YXR1cyByZXBvcnRlZCBpcyBTaXplQXZhaWxhYmxlIGJ1dAorICAgICAgICBJ
bWFnZTo6aXNOdWxsKCkgcmV0dXJucyB0cnVlLiBBbiBJbWFnZSBpcyBjb25zaWRlcmVkIHRvIGJl
IE51bGwgd2hlbiBpdHMgc2l6ZSBpcyBlbXB0eSwgYW5kIHRoZSBzaXplIGlzCisgICAgICAgIGNh
bGN1bGF0ZWQgYWx3YXlzIHVzaW5nIHRoZSBmaXJzdCBmcmFtZSBpbiBJbWFnZUZyYW1lQ2FjaGUu
IFNpbmNlIHdlIHN0aWxsIGRvbid0IGhhdmUgZnJhbWVzLCB0aGUgaW1hZ2UgaXMKKyAgICAgICAg
YWx3YXlzIE51bGwgaW4gdGhpcyBjYXNlLiBJdCBpcyBub3QgZXhwZWN0ZWQgdGhhdCBFbmNvZGVk
RGF0YVN0YXR1cyByZXR1cm5zIFNpemVBdmFpbGFibGUgYW5kIHRoZSBpbWFnZSBpcyBOdWxsLAor
ICAgICAgICB0aGF0J3Mgd2h5IGl0J3MgY29uc2lkZXJlZCBhbiBlcnJvciBhbmQgdGhlIGxvYWQg
ZmluaXNoZXMgd2l0aCBhIGRlY29kZSBlcnJvci4gSG93ZXZlciwgdGhlIG5vbiBDRyBJbWFnZURl
Y29kZXIKKyAgICAgICAgaGFzIGEgbV9zaXplIG1lbWJlciB0byBoYW5kbGUgdGhpcyBwYXJ0aWN1
bGFyIGNhc2UsIGFuZCBpdCdzIHdoZW4gbV9zaXplIGlzIHNldCB3aGVuIEVuY29kZWREYXRhU3Rh
dHVzIGNoYW5nZXMKKyAgICAgICAgdG8gU2l6ZUF2YWlsYWJsZS4gV2Ugc2hvdWxkIHJldHVybiB0
aGUgSW1hZ2VFbmNvZGVyIHNpemUgYXMgdGhlIEltYWdlU2l6ZSB3aGVuIHdlIGhhdmUgYSBkZWNv
ZGVyIGJ1dAorICAgICAgICBub3QgZnJhbWVzIHlldC4KKworICAgICAgICBUZXN0OiBodHRwL3Rl
c3RzL2ltYWdlcy9naWYtcHJvZ3Jlc3NpdmUtbG9hZC5odG1sCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW1hZ2VG
cmFtZUNhY2hlOjpzaXplKTogUmV0dXJuIEltYWdlRGVjb2Rlcjo6c2l6ZSgpIHdpdGhvdXQgY2Fj
aGluZyBpdCwgaWYgZnJhbWUgbGlzdCBpcyBlbXB0eS4KKwogMjAxNy0wNS0xMSAgQ2hyaXMgRHVt
ZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgcmVtYWluaW5nIHVzZXMgb2Yg
UGFzc1JlZlB0ciBpbiBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9JbWFnZUZyYW1lQ2FjaGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvSW1hZ2VGcmFtZUNhY2hlLmNwcAppbmRleCBiNGIyOGQ0NDA3OC4uOWNmNDJmYmFk
MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0ltYWdlRnJh
bWVDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW1hZ2VG
cmFtZUNhY2hlLmNwcApAQCAtNDc2LDYgKzQ3NiwxMiBAQCBzdGQ6Om9wdGlvbmFsPEludFBvaW50
PiBJbWFnZUZyYW1lQ2FjaGU6OmhvdFNwb3QoKQogCiBJbnRTaXplIEltYWdlRnJhbWVDYWNoZTo6
c2l6ZSgpCiB7CisjaWYgIVVTRShDRykKKyAgICAvLyBJdCdzIHBvc3NpYmxlIHRoYXQgd2UgaGF2
ZSBkZWNvZGVkIHRoZSBtZXRhZGF0YSwgYnV0IG5vdCBmcmFtZSBjb250ZW50cyB5ZXQuIEluIHRo
YXQgY2FzZSBJbWFnZURlY29kZXIgY2xhaW1zIHRvCisgICAgLy8gaGF2ZSB0aGUgc2l6ZSBhdmFp
bGFibGUsIGJ1dCB0aGUgZnJhbWUgY2FjaGUgaXMgZW1wdHkuIFJldHVybiB0aGUgZGVjb2RlciBz
aXplIHdpdGhvdXQgY2FjaGluZyBpbiBzdWNoIGNhc2UuCisgICAgaWYgKG1fZnJhbWVzLmlzRW1w
dHkoKSAmJiBpc0RlY29kZXJBdmFpbGFibGUoKSkKKyAgICAgICAgcmV0dXJuIG1fZGVjb2Rlci0+
c2l6ZSgpOworI2VuZGlmCiAgICAgcmV0dXJuIGZyYW1lTWV0YWRhdGFBdEluZGV4Q2FjaGVJZk5l
ZWRlZDxJbnRTaXplPigwLCAoJkltYWdlRnJhbWU6OnNpemUpLCAmbV9zaXplLCBJbWFnZUZyYW1l
OjpDYWNoaW5nOjpNZXRhZGF0YSwgU3Vic2FtcGxpbmdMZXZlbDo6RGVmYXVsdCk7CiB9CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>