<?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>122996</bug_id>
          
          <creation_ts>2013-10-17 14:39:25 -0700</creation_ts>
          <short_desc>[GStreamer][GTK] Add GRefPtr::outPtr()</short_desc>
          <delta_ts>2013-10-18 10:14:26 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</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="Brendan Long">b.long</reporter>
          <assigned_to name="Brendan Long">b.long</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>jer.noble</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>rakuco</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>940986</commentid>
    <comment_count>0</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-10-17 14:39:25 -0700</bug_when>
    <thetext>I keep getting requests in reviews to use GRefPtr in cases like this:

    GstObject* x;
    g_object_get(y, &quot;some-property&quot;, &amp;x, NULL);
    /* stuff */
    gst_object_unref(x);

The problem is that to use a GRefPtr, we&apos;d need to do:

    GstObject* xRawPtr;
    g_object_get(y, &quot;some-property&quot;, &amp;xRawPtr, NULL);
    GRefPtr&lt;GstObject&gt; x = adoptGRef(xRawPtr);
    /* stuff */

Which is really awkward.

This patch adds this to GRefPtr:

    T*&amp; outPtr()
    {
        ASSERT(!m_ptr);
        return m_ptr;
    }

Which lets me do this:

    GRefPtr&lt;GstObject&gt; x;
    g_object_get(y, &quot;some-property&quot;, &amp;x.outPtr(), NULL);
    /* stuff */

Messing with outPtr() has the same effect as adoptGRef() (no extra ref). As far as I can tell, g_object_get and related functions always ref their out parameters, so I think this is reasonably safe.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940992</commentid>
    <comment_count>1</comment_count>
      <attachid>214516</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-10-17 14:47:23 -0700</bug_when>
    <thetext>Created attachment 214516
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>940996</commentid>
    <comment_count>2</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-10-17 15:02:49 -0700</bug_when>
    <thetext>Actually, I missed a couple places, and this one makes me wonder if outPtr() should just deref any existing m_ptr:

void MediaPlayerPrivateGStreamer::updateAudioSink()
{
    if (!m_playBin)
        return;

    GstElement* sinkPtr = 0;

    g_object_get(m_playBin.get(), &quot;audio-sink&quot;, &amp;sinkPtr, NULL);
    m_webkitAudioSink = adoptGRef(sinkPtr);

}

With my current patch, I could do:

void MediaPlayerPrivateGStreamer::updateAudioSink()
{
    if (!m_playBin)
        return;

    m_webkitAudioSink.clear();
    g_object_get(m_playBin.get(), &quot;audio-sink&quot;, &amp;m_webkitAudioSink.outPtr(), NULL);
}

But if I changed outPtr to this:

    T*&amp; outPtr()
    {
        if (m_ptr) {
            derefGPtr(ptr);
            m_ptr = 0; /* to prevent incorrect usage */
        }
        return m_ptr;
    }

I could do:

void MediaPlayerPrivateGStreamer::updateAudioSink()
{
    if (!m_playBin)
        return;

    g_object_get(m_playBin.get(), &quot;audio-sink&quot;, &amp;m_webkitAudioSink.outPtr(), NULL);
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941036</commentid>
    <comment_count>3</comment_count>
      <attachid>214530</attachid>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-10-17 16:25:04 -0700</bug_when>
    <thetext>Created attachment 214530
Patch

I added more cases where this is useful (previously I searched for _unref, this time I searched for g_object_get).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941037</commentid>
    <comment_count>4</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-10-17 16:25:55 -0700</bug_when>
    <thetext>Oh, and I didn&apos;t change outPtr(), since I think it&apos;s valuable for it to have the same semantics as GOwnPtr::outPtr().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941099</commentid>
    <comment_count>5</comment_count>
      <attachid>214530</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2013-10-17 23:50:40 -0700</bug_when>
    <thetext>Comment on attachment 214530
Patch

Neat!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941101</commentid>
    <comment_count>6</comment_count>
      <attachid>214530</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-18 00:15:53 -0700</bug_when>
    <thetext>Comment on attachment 214530
Patch

Clearing flags on attachment: 214530

Committed r157624: &lt;http://trac.webkit.org/changeset/157624&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941102</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-18 00:15:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>941256</commentid>
    <comment_count>8</comment_count>
    <who name="Brendan Long">b.long</who>
    <bug_when>2013-10-18 10:14:26 -0700</bug_when>
    <thetext>At some point it may be useful to make outPtr() implicitly clear() the internal pointer, since it would also make any usage of strings much nicer, letting change this:

        GstTagList* tags = 0;
        gst_event_parse_tag(event.get(), &amp;tags);
        ASSERT(tags);

        gchar* tagValue;
        if (gst_tag_list_get_string(tags, GST_TAG_TITLE, &amp;tagValue)) {
            INFO_MEDIA_MESSAGE(&quot;Audio track %d got title %s.&quot;, m_index, tagValue);
            label = tagValue;
            g_free(tagValue);
        }

        if (gst_tag_list_get_string(tags, GST_TAG_LANGUAGE_CODE, &amp;tagValue)) {
            INFO_MEDIA_MESSAGE(&quot;Audio track %d got language %s.&quot;, m_index, tagValue);
            language = tagValue;
            g_free(tagValue);
        }

To this:

        GstTagList* tags = 0;
        gst_event_parse_tag(event.get(), &amp;tags);
        ASSERT(tags);

        GOwnPtr&lt;gchar&gt; tagValue;
        if (gst_tag_list_get_string(tags, GST_TAG_TITLE, &amp;tagValue.outPtr())) {
            INFO_MEDIA_MESSAGE(&quot;Audio track %d got title %s.&quot;, m_index, tagValue);
            label = tagValue;
        }

        if (gst_tag_list_get_string(tags, GST_TAG_LANGUAGE_CODE, &amp;tagValue.outPtr())) {
            INFO_MEDIA_MESSAGE(&quot;Audio track %d got language %s.&quot;, m_index, tagValue);
            language = tagValue;
        }</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214516</attachid>
            <date>2013-10-17 14:47:23 -0700</date>
            <delta_ts>2013-10-17 16:25:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122996-20131017154722.patch</filename>
            <type>text/plain</type>
            <size>6773</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9n
b2JqZWN0L0dSZWZQdHIuaCBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oCmluZGV4
IDZjNTBmNGRhNDIxOGRhYWNmMjEzMzM3ZDAzMDQyMzJjYjNhNjM1ZWEuLmU3ZDhiNjRiNDBiOTI0
OGU3NDdhNTE3YjdhNmY3MDYyZGM2M2JmZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL2dv
YmplY3QvR1JlZlB0ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL2dvYmplY3QvR1JlZlB0ci5oCkBA
IC04NSw2ICs4NSwxMiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBwdHI7CiAgICAgfQogCisg
ICAgVComIG91dFB0cigpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fcHRyKTsKKyAgICAgICAg
cmV0dXJuIG1fcHRyOworICAgIH0KKwogICAgIC8vIEhhc2ggdGFibGUgZGVsZXRlZCB2YWx1ZXMs
IHdoaWNoIGFyZSBvbmx5IGNvbnN0cnVjdGVkIGFuZCBuZXZlciBjb3BpZWQgb3IgZGVzdHJveWVk
LgogICAgIEdSZWZQdHIoSGFzaFRhYmxlRGVsZXRlZFZhbHVlVHlwZSkgOiBtX3B0cihoYXNoVGFi
bGVEZWxldGVkVmFsdWUoKSkgeyB9CiAgICAgYm9vbCBpc0hhc2hUYWJsZURlbGV0ZWRWYWx1ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcHRyID09IGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0
ckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKaW5kZXggODJlZTkwNmY3NGEyOTc3NzEzMDcwNzBmYWI1
ZDg2MGIxNzJjMDZjMi4uMGRiZGY3YzE5Y2MwOGNlNWZiOGZhMmEwYjJhMTBlMDk5ZWM5ZGU1ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dS
ZWZQdHJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcApAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1
ZGUgIkdTdHJlYW1lclZlcnNpb25pbmcuaCIKIAogI2lmIFVTRShHU1RSRUFNRVIpCi0jaW5jbHVk
ZSA8Z3N0L2dzdGVsZW1lbnQuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAKIG5hbWVzcGFjZSBX
VEYgewogCkBAIC0yMjMsNSArMjIzLDI0IEBAIHRlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0
RXZlbnQ+KEdzdEV2ZW50KiBwdHIpCiAgICAgaWYgKHB0cikKICAgICAgICAgZ3N0X2V2ZW50X3Vu
cmVmKHB0cik7CiB9CisKK3RlbXBsYXRlPD4gR1JlZlB0cjxHc3RUb2M+IGFkb3B0R1JlZihHc3RU
b2MqIHB0cikKK3sKKyAgICByZXR1cm4gR1JlZlB0cjxHc3RUb2M+KHB0ciwgR1JlZlB0ckFkb3B0
KTsKK30KKwordGVtcGxhdGU8PiBHc3RUb2MqIHJlZkdQdHI8R3N0VG9jPihHc3RUb2MqIHB0cikK
K3sKKyAgICBpZiAocHRyKQorICAgICAgICBnc3RfdG9jX3JlZihwdHIpOworCisgICAgcmV0dXJu
IHB0cjsKK30KKwordGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RUb2M+KEdzdFRvYyogcHRy
KQoreworICAgIGlmIChwdHIpCisgICAgICAgIGdzdF90b2NfdW5yZWYocHRyKTsKK30KIH0KICNl
bmRpZiAvLyBVU0UoR1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmgKaW5kZXggNDFi
OTExZDJmZmVmNTFjZjY1N2U2OGVmYmU4YTM4ZmRhMzJhZTk5OS4uOGQ2M2IyYzFiYWFjYTk4MmMy
MDYwNWJjNDU1YWI0YzI2ZDVkNTBlOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5oCkBAIC0z
NSw2ICszNSw3IEBAIHR5cGVkZWYgc3RydWN0IF9Hc3RCdWZmZXIgR3N0QnVmZmVyOwogdHlwZWRl
ZiBzdHJ1Y3QgX0dzdFNhbXBsZSBHc3RTYW1wbGU7CiAjZW5kaWYKIHR5cGVkZWYgc3RydWN0IF9H
c3RFdmVudCBHc3RFdmVudDsKK3R5cGVkZWYgc3RydWN0IF9Hc3RUb2MgR3N0VG9jOwogCiBuYW1l
c3BhY2UgV1RGIHsKIApAQCAtNzksNiArODAsMTAgQEAgdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0
cjxHc3RTYW1wbGU+KEdzdFNhbXBsZSogcHRyKTsKIHRlbXBsYXRlPD4gR1JlZlB0cjxHc3RFdmVu
dD4gYWRvcHRHUmVmKEdzdEV2ZW50KiBwdHIpOwogdGVtcGxhdGU8PiBHc3RFdmVudCogcmVmR1B0
cjxHc3RFdmVudD4oR3N0RXZlbnQqIHB0cik7CiB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPEdz
dEV2ZW50PihHc3RFdmVudCogcHRyKTsKKwordGVtcGxhdGU8PiBHUmVmUHRyPEdzdFRvYz4gYWRv
cHRHUmVmKEdzdFRvYyogcHRyKTsKK3RlbXBsYXRlPD4gR3N0VG9jKiByZWZHUHRyPEdzdFRvYz4o
R3N0VG9jKiBwdHIpOwordGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RUb2M+KEdzdFRvYyog
cHRyKTsKIH0KIAogI2VuZGlmIC8vIFVTRShHU1RSRUFNRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCmluZGV4IGYyZGQ4ZWEzYWY3NjlmNjU5YjE4
MjQwZWUyZTA2ODE0YjhhODM4YzIuLjFhYTE4ZDcwMjE5Njk5MGVhOThiOWQ1YzIxNjA0Y2NhOWZi
ZWQ0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJl
YW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCkBAIC02ODAsMjAgKzY4MCwxOCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
cjo6bm90aWZ5UGxheWVyT2ZUZXh0KCkKICAgICAgICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5n
ZXQoKSwgIm4tdGV4dCIsICZudW1UcmFja3MsIE5VTEwpOwogCiAgICAgZm9yIChnaW50IGkgPSAw
OyBpIDwgbnVtVHJhY2tzOyArK2kpIHsKLSAgICAgICAgR3N0UGFkKiBwYWQ7Ci0gICAgICAgIGdf
c2lnbmFsX2VtaXRfYnlfbmFtZShtX3BsYXlCaW4uZ2V0KCksICJnZXQtdGV4dC1wYWQiLCBpLCAm
cGFkLCBOVUxMKTsKKyAgICAgICAgR1JlZlB0cjxHc3RQYWQ+IHBhZDsKKyAgICAgICAgZ19zaWdu
YWxfZW1pdF9ieV9uYW1lKG1fcGxheUJpbi5nZXQoKSwgImdldC10ZXh0LXBhZCIsIGksICZwYWQu
b3V0UHRyKCksIE5VTEwpOwogICAgICAgICBBU1NFUlQocGFkKTsKIAogICAgICAgICBpZiAoaSA8
IHN0YXRpY19jYXN0PGdpbnQ+KG1fdGV4dFRyYWNrcy5zaXplKCkpKSB7CiAgICAgICAgICAgICBS
ZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcj4gZXhpc3RpbmdUcmFjayA9IG1f
dGV4dFRyYWNrc1tpXTsKICAgICAgICAgICAgIGV4aXN0aW5nVHJhY2stPnNldEluZGV4KGkpOwot
ICAgICAgICAgICAgaWYgKGV4aXN0aW5nVHJhY2stPnBhZCgpID09IHBhZCkgewotICAgICAgICAg
ICAgICAgIGdzdF9vYmplY3RfdW5yZWYocGFkKTsKKyAgICAgICAgICAgIGlmIChleGlzdGluZ1Ry
YWNrLT5wYWQoKSA9PSBwYWQpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICB9CiAgICAgICAgIH0KIAotICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdT
dHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGUo
aSwgYWRvcHRHUmVmKHBhZCkpOworICAgICAgICBSZWZQdHI8SW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUdTdHJlYW1lcj4gdHJhY2sgPSBJbmJhbmRUZXh0VHJhY2tQcml2YXRlR1N0cmVhbWVyOjpjcmVh
dGUoaSwgcGFkKTsKICAgICAgICAgbV90ZXh0VHJhY2tzLmluc2VydChpLCB0cmFjayk7CiAgICAg
ICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2sodHJhY2sucmVsZWFzZSgpKTsKICAgICB9CkBAIC03
MTQsOCArNzEyLDggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om5ld1RleHRT
YW1wbGUoKQogICAgIEdSZWZQdHI8R3N0RXZlbnQ+IHN0cmVhbVN0YXJ0RXZlbnQgPSBhZG9wdEdS
ZWYoCiAgICAgICAgIGdzdF9wYWRfZ2V0X3N0aWNreV9ldmVudChtX3RleHRBcHBTaW5rUGFkLmdl
dCgpLCBHU1RfRVZFTlRfU1RSRUFNX1NUQVJULCAwKSk7CiAKLSAgICBHc3RTYW1wbGUqIHNhbXBs
ZTsKLSAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV90ZXh0QXBwU2luay5nZXQoKSwgInB1bGwt
c2FtcGxlIiwgJnNhbXBsZSwgTlVMTCk7CisgICAgR1JlZlB0cjxHc3RTYW1wbGU+IHNhbXBsZTsK
KyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUobV90ZXh0QXBwU2luay5nZXQoKSwgInB1bGwtc2Ft
cGxlIiwgJnNhbXBsZS5vdXRQdHIoKSwgTlVMTCk7CiAgICAgQVNTRVJUKHNhbXBsZSk7CiAKICAg
ICBpZiAoc3RyZWFtU3RhcnRFdmVudCkgewpAQCAtNzM0LDcgKzczMiw2IEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuZXdUZXh0U2FtcGxlKCkKICAgICAgICAgICAgIFdBUk5f
TUVESUFfTUVTU0FHRSgiR290IHNhbXBsZSB3aXRoIHVua25vd24gc3RyZWFtIElELiIpOwogICAg
IH0gZWxzZQogICAgICAgICBXQVJOX01FRElBX01FU1NBR0UoIlVuYWJsZSB0byBoYW5kbGUgc2Ft
cGxlIHdpdGggbm8gc3RyZWFtIHN0YXJ0IGV2ZW50LiIpOwotICAgIGdzdF9zYW1wbGVfdW5yZWYo
c2FtcGxlKTsKIH0KICNlbmRpZgogCkBAIC0xMDAwLDE1ICs5OTcsMTMgQEAgdm9pZCBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXI6OnByb2Nlc3NUYWJsZU9mQ29udGVudHMoR3N0TWVzc2FnZSog
bWVzc2FnZSkKICAgICBtX2NoYXB0ZXJzVHJhY2sgPSBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVHU3RyZWFtZXI6OmNyZWF0ZShJbmJhbmRUZXh0VHJhY2tQcml2YXRlOjpDaGFwdGVycyk7
CiAgICAgbV9wbGF5ZXItPmFkZFRleHRUcmFjayhtX2NoYXB0ZXJzVHJhY2spOwogCi0gICAgR3N0
VG9jKiB0b2M7CisgICAgR1JlZlB0cjxHc3RUb2M+IHRvYzsKICAgICBnYm9vbGVhbiB1cGRhdGVk
OwotICAgIGdzdF9tZXNzYWdlX3BhcnNlX3RvYyhtZXNzYWdlLCAmdG9jLCAmdXBkYXRlZCk7Cisg
ICAgZ3N0X21lc3NhZ2VfcGFyc2VfdG9jKG1lc3NhZ2UsICZ0b2Mub3V0UHRyKCksICZ1cGRhdGVk
KTsKICAgICBBU1NFUlQodG9jKTsKIAotICAgIGZvciAoR0xpc3QqIGkgPSBnc3RfdG9jX2dldF9l
bnRyaWVzKHRvYyk7IGk7IGkgPSBpLT5uZXh0KQorICAgIGZvciAoR0xpc3QqIGkgPSBnc3RfdG9j
X2dldF9lbnRyaWVzKHRvYy5nZXQoKSk7IGk7IGkgPSBpLT5uZXh0KQogICAgICAgICBwcm9jZXNz
VGFibGVPZkNvbnRlbnRzRW50cnkoc3RhdGljX2Nhc3Q8R3N0VG9jRW50cnkqPihpLT5kYXRhKSwg
MCk7Ci0KLSAgICBnc3RfdG9jX3VucmVmKHRvYyk7CiB9CiAKIHZvaWQgTWVkaWFQbGF5ZXJQcml2
YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzRW50cnkoR3N0VG9jRW50cnkqIGVu
dHJ5LCBHc3RUb2NFbnRyeSogcGFyZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2Uu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IDc1NTcwMGU0YzI1NjhjNTA5MTNlYzYz
YzA5M2Q2ODBmNzM3NjBkOTMuLjAyMTc2NzM2YjRjNjg5OWE4YjA2NjYwZTc3NDYxZTg5ZjU2YjAz
ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5jcHAKQEAgLTUxNSw5ICs1MTUsOSBAQCBHUmVmUHRyPEdzdENhcHM+IE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2U6OmN1cnJlbnRWaWRlb1NpbmtDYXBzKCkgY29uc3QKICAgICBp
ZiAoIW1fd2Via2l0VmlkZW9TaW5rKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEdzdENhcHMq
IGN1cnJlbnRDYXBzID0gMDsKLSAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QobV93ZWJraXRWaWRl
b1NpbmsuZ2V0KCkpLCAiY3VycmVudC1jYXBzIiwgJmN1cnJlbnRDYXBzLCBOVUxMKTsKLSAgICBy
ZXR1cm4gYWRvcHRHUmVmKGN1cnJlbnRDYXBzKTsKKyAgICBHUmVmUHRyPEdzdENhcHM+IGN1cnJl
bnRDYXBzOworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChtX3dlYmtpdFZpZGVvU2luay5nZXQo
KSksICJjdXJyZW50LWNhcHMiLCAmY3VycmVudENhcHMub3V0UHRyKCksIE5VTEwpOworICAgIHJl
dHVybiBjdXJyZW50Q2FwczsKIH0KIAogLy8gVGhpcyBmdW5jdGlvbiBjcmVhdGVzIGFuZCBpbml0
aWFsaXplcyBzb21lIGludGVybmFsIHZhcmlhYmxlcywgYW5kIHJldHVybnMgYQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>214530</attachid>
            <date>2013-10-17 16:25:04 -0700</date>
            <delta_ts>2013-10-18 00:15:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122996-20131017172503.patch</filename>
            <type>text/plain</type>
            <size>12989</size>
            <attacher name="Brendan Long">b.long</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU3NTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDliOGI1MWMwYmEyZmUxOWVkMjAyNzIx
OGZlOGFlMjhlOTQ5NmI4YzQuLjVkMDljN2M5NDFiNjFjZDExMDk0ZTI2MWI3OTA3ZmJjYzBjNWMx
ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMTAtMTcgIEJyZW5kYW4gTG9uZyAgPGIubG9u
Z0BjYWJsZWxhYnMuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW0dUS10gQWRkIEdSZWZQdHI6
Om91dFB0cigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMjI5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHd0Zi9nb2JqZWN0L0dSZWZQdHIuaDoKKyAgICAgICAgKFdURjo6R1JlZlB0cjo6b3V0UHRy
KTogQWRkZWQuCisKIDIwMTMtMTAtMTYgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4K
IAogICAgICAgICBJbnRyb2R1Y2UgV1RGOjpCYWcgYW5kIHN0YXJ0IHVzaW5nIGl0IGZvciBJbmxp
bmVDYWxsRnJhbWVTZXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAwM2UzODI0NTE3Zjg5OWUyYTIxNjBhN2ZjN2U5
NTdhYzZkZGQxM2M5Li43MmRhNDZjZDBjYTdlZmI5Y2JjZjQwYmU1NWVmNDc4MzY1YzBkODFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTMtMTAtMTcgIEJyZW5kYW4gTG9uZyAgPGIu
bG9uZ0BjYWJsZWxhYnMuY29tPgorCisgICAgICAgIFtHU3RyZWFtZXJdW0dUS10gQWRkIEdSZWZQ
dHI6Om91dFB0cigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMjI5OTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMgYmVjYXVzZSB0aGlzIGlzIGp1c3Qgc2ltcGxpZnlpbmcgZXhpc3Rp
bmcgY29kZS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRy
R1N0cmVhbWVyLmNwcDogQWRkIEdSZWZQdHIgc3BlY2lhbGl6YXRpb24gZm9yIEdzdFRvYy4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5oOiBT
YW1lLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29y
bGQuY3BwOiBVc2UgR1JlZlB0cjo6b3V0UHRyKCkgdG8gc2ltcGxpZnkgY29kZS4KKyAgICAgICAg
KFdlYkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKToKKyAgICAgICAgKFdl
YkNvcmU6OkdTdHJlYW1lckdXb3JsZDo6ZXhpdEZ1bGxzY3JlZW4pOgorICAgICAgICAoV2ViQ29y
ZTo6R1N0cmVhbWVyR1dvcmxkOjpyZW1vdmVQbGF0Zm9ybVZpZGVvU2luayk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5j
cHA6IFNhbWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6
Om5vdGlmeVBsYXllck9mVGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXI6Om5ld1RleHRTYW1wbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFz
ZS5jcHA6IFNhbWUuCisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXJCYXNlOjpjdXJyZW50VmlkZW9TaW5rQ2Fwcyk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHA6IFNhbWUuCisgICAgICAgIChXZWJDb3JlOjpI
b3N0VExTQ2VydGlmaWNhdGVTZXQ6OmNvbXB1dGVDZXJ0aWZpY2F0ZUhhc2gpOgorCiAyMDEzLTEw
LTE3ICBOaWNvIFdlYmVyICA8dGhha2lzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBGaXggdGhy
ZWUgYnVncyBpbiB0aGUgZXF1YWxzKCkgaW1wbGVtZW50YXRpb25zIGZvciBjc3MgZ3JhZGllbnRz
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvZ29iamVjdC9HUmVmUHRyLmggYi9Tb3VyY2Uv
V1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaAppbmRleCA2YzUwZjRkYTQyMThkYWFjZjIxMzMzN2Qw
MzA0MjMyY2IzYTYzNWVhLi5lN2Q4YjY0YjQwYjkyNDhlNzQ3YTUxN2I3YTZmNzA2MmRjNjNiZmYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaAorKysgYi9Tb3Vy
Y2UvV1RGL3d0Zi9nb2JqZWN0L0dSZWZQdHIuaApAQCAtODUsNiArODUsMTIgQEAgcHVibGljOgog
ICAgICAgICByZXR1cm4gcHRyOwogICAgIH0KIAorICAgIFQqJiBvdXRQdHIoKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFtX3B0cik7CisgICAgICAgIHJldHVybiBtX3B0cjsKKyAgICB9CisKICAg
ICAvLyBIYXNoIHRhYmxlIGRlbGV0ZWQgdmFsdWVzLCB3aGljaCBhcmUgb25seSBjb25zdHJ1Y3Rl
ZCBhbmQgbmV2ZXIgY29waWVkIG9yIGRlc3Ryb3llZC4KICAgICBHUmVmUHRyKEhhc2hUYWJsZURl
bGV0ZWRWYWx1ZVR5cGUpIDogbV9wdHIoaGFzaFRhYmxlRGVsZXRlZFZhbHVlKCkpIHsgfQogICAg
IGJvb2wgaXNIYXNoVGFibGVEZWxldGVkVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3B0ciA9PSBo
YXNoVGFibGVEZWxldGVkVmFsdWUoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCmlu
ZGV4IDgyZWU5MDZmNzRhMjk3NzcxMzA3MDcwZmFiNWQ4NjBiMTcyYzA2YzIuLjBkYmRmN2MxOWNj
MDhjZTVmYjhmYTJhMGIyYTEwZTA5OWVjOWRlNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1l
ci5jcHAKQEAgLTIyLDcgKzIyLDcgQEAKICNpbmNsdWRlICJHU3RyZWFtZXJWZXJzaW9uaW5nLmgi
CiAKICNpZiBVU0UoR1NUUkVBTUVSKQotI2luY2x1ZGUgPGdzdC9nc3RlbGVtZW50Lmg+CisjaW5j
bHVkZSA8Z3N0L2dzdC5oPgogCiBuYW1lc3BhY2UgV1RGIHsKIApAQCAtMjIzLDUgKzIyMywyNCBA
QCB0ZW1wbGF0ZTw+IHZvaWQgZGVyZWZHUHRyPEdzdEV2ZW50PihHc3RFdmVudCogcHRyKQogICAg
IGlmIChwdHIpCiAgICAgICAgIGdzdF9ldmVudF91bnJlZihwdHIpOwogfQorCit0ZW1wbGF0ZTw+
IEdSZWZQdHI8R3N0VG9jPiBhZG9wdEdSZWYoR3N0VG9jKiBwdHIpCit7CisgICAgcmV0dXJuIEdS
ZWZQdHI8R3N0VG9jPihwdHIsIEdSZWZQdHJBZG9wdCk7Cit9CisKK3RlbXBsYXRlPD4gR3N0VG9j
KiByZWZHUHRyPEdzdFRvYz4oR3N0VG9jKiBwdHIpCit7CisgICAgaWYgKHB0cikKKyAgICAgICAg
Z3N0X3RvY19yZWYocHRyKTsKKworICAgIHJldHVybiBwdHI7Cit9CisKK3RlbXBsYXRlPD4gdm9p
ZCBkZXJlZkdQdHI8R3N0VG9jPihHc3RUb2MqIHB0cikKK3sKKyAgICBpZiAocHRyKQorICAgICAg
ICBnc3RfdG9jX3VucmVmKHB0cik7Cit9CiB9CiAjZW5kaWYgLy8gVVNFKEdTVFJFQU1FUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvR1JlZlB0ckdTdHJlYW1lci5oCmluZGV4IDQxYjkxMWQyZmZlZjUxY2Y2NTdlNjhlZmJlOGEz
OGZkYTMyYWU5OTkuLjhkNjNiMmMxYmFhY2E5ODJjMjA2MDViYzQ1NWFiNGMyNmQ1ZDUwZTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVm
UHRyR1N0cmVhbWVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuaApAQCAtMzUsNiArMzUsNyBAQCB0eXBlZGVmIHN0cnVj
dCBfR3N0QnVmZmVyIEdzdEJ1ZmZlcjsKIHR5cGVkZWYgc3RydWN0IF9Hc3RTYW1wbGUgR3N0U2Ft
cGxlOwogI2VuZGlmCiB0eXBlZGVmIHN0cnVjdCBfR3N0RXZlbnQgR3N0RXZlbnQ7Cit0eXBlZGVm
IHN0cnVjdCBfR3N0VG9jIEdzdFRvYzsKIAogbmFtZXNwYWNlIFdURiB7CiAKQEAgLTc5LDYgKzgw
LDEwIEBAIHRlbXBsYXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0U2FtcGxlPihHc3RTYW1wbGUqIHB0
cik7CiB0ZW1wbGF0ZTw+IEdSZWZQdHI8R3N0RXZlbnQ+IGFkb3B0R1JlZihHc3RFdmVudCogcHRy
KTsKIHRlbXBsYXRlPD4gR3N0RXZlbnQqIHJlZkdQdHI8R3N0RXZlbnQ+KEdzdEV2ZW50KiBwdHIp
OwogdGVtcGxhdGU8PiB2b2lkIGRlcmVmR1B0cjxHc3RFdmVudD4oR3N0RXZlbnQqIHB0cik7CisK
K3RlbXBsYXRlPD4gR1JlZlB0cjxHc3RUb2M+IGFkb3B0R1JlZihHc3RUb2MqIHB0cik7Cit0ZW1w
bGF0ZTw+IEdzdFRvYyogcmVmR1B0cjxHc3RUb2M+KEdzdFRvYyogcHRyKTsKK3RlbXBsYXRlPD4g
dm9pZCBkZXJlZkdQdHI8R3N0VG9jPihHc3RUb2MqIHB0cik7CiB9CiAKICNlbmRpZiAvLyBVU0Uo
R1NUUkVBTUVSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0dTdHJlYW1lckdXb3JsZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAppbmRleCAxZDJlN2I5Y2RhNTIx
YzQ0NWU3ZjE1MDA2NjM1NzExMTE0MjY1MTg3Li4wZmVjMmUyNWQ4ZWE0NWNjZDE2NWIwYmM2OThl
NTdjNWE1YTkyYWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcApAQCAtMTE4LDEwICsx
MTgsNyBAQCBib29sIEdTdHJlYW1lckdXb3JsZDo6ZW50ZXJGdWxsc2NyZWVuKCkKIAogICAgIC8v
IEdldCB2aWRlbyBzaW5rIGJpbiBhbmQgdGhlIHRlZSBpbnNpZGUuCiAgICAgR1JlZlB0cjxHc3RF
bGVtZW50PiB2aWRlb1Npbms7Ci0gICAgR3N0RWxlbWVudCogc2lua1B0ciA9IDA7Ci0KLSAgICBn
X29iamVjdF9nZXQobV9waXBlbGluZSwgInZpZGVvLXNpbmsiLCAmc2lua1B0ciwgTlVMTCk7Ci0g
ICAgdmlkZW9TaW5rID0gYWRvcHRHUmVmKHNpbmtQdHIpOworICAgIGdfb2JqZWN0X2dldChtX3Bp
cGVsaW5lLCAidmlkZW8tc2luayIsICZ2aWRlb1Npbmsub3V0UHRyKCksIE5VTEwpOwogCiAgICAg
R1JlZlB0cjxHc3RFbGVtZW50PiB0ZWUgPSBhZG9wdEdSZWYoZ3N0X2Jpbl9nZXRfYnlfbmFtZShH
U1RfQklOKHZpZGVvU2luay5nZXQoKSksICJ2aWRlb1RlZSIpKTsKIApAQCAtMTk2LDkgKzE5Myw4
IEBAIHZvaWQgR1N0cmVhbWVyR1dvcmxkOjpleGl0RnVsbHNjcmVlbigpCiAgICAgaWYgKCFtX2R5
bmFtaWNQYWROYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBHc3RFbGVtZW50KiBzaW5rUHRy
ID0gMDsKLSAgICBnX29iamVjdF9nZXQobV9waXBlbGluZSwgInZpZGVvLXNpbmsiLCAmc2lua1B0
ciwgTlVMTCk7Ci0gICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2aWRlb1NpbmsgPSBhZG9wdEdSZWYo
c2lua1B0cik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50PiB2aWRlb1Npbms7CisgICAgZ19vYmpl
Y3RfZ2V0KG1fcGlwZWxpbmUsICJ2aWRlby1zaW5rIiwgJnZpZGVvU2luay5vdXRQdHIoKSwgTlVM
TCk7CiAKICAgICBHUmVmUHRyPEdzdEVsZW1lbnQ+IHRlZSA9IGFkb3B0R1JlZihnc3RfYmluX2dl
dF9ieV9uYW1lKEdTVF9CSU4odmlkZW9TaW5rLmdldCgpKSwgInZpZGVvVGVlIikpOwogICAgIEdS
ZWZQdHI8R3N0UGFkPiBzcmNQYWQgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19w
YWQodGVlLmdldCgpLCBtX2R5bmFtaWNQYWROYW1lLmdldCgpKSk7CkBAIC0yMjUsOSArMjIxLDgg
QEAgdm9pZCBHU3RyZWFtZXJHV29ybGQ6OnJlbW92ZVBsYXRmb3JtVmlkZW9TaW5rKCkKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgLy8gR2V0IHZpZGVvIHNpbmsgYmluIGFuZCB0aGUgZWxlbWVudHMg
dG8gcmVtb3ZlLgotICAgIEdzdEVsZW1lbnQqIHNpbmtQdHIgPSAwOwotICAgIGdfb2JqZWN0X2dl
dChtX3BpcGVsaW5lLCAidmlkZW8tc2luayIsICZzaW5rUHRyLCBOVUxMKTsKLSAgICBHUmVmUHRy
PEdzdEVsZW1lbnQ+IHZpZGVvU2luayA9IGFkb3B0R1JlZihzaW5rUHRyKTsKKyAgICBHUmVmUHRy
PEdzdEVsZW1lbnQ+IHZpZGVvU2luazsKKyAgICBnX29iamVjdF9nZXQobV9waXBlbGluZSwgInZp
ZGVvLXNpbmsiLCAmdmlkZW9TaW5rLm91dFB0cigpLCBOVUxMKTsKIAogICAgIEdSZWZQdHI8R3N0
RWxlbWVudD4gdGVlID0gYWRvcHRHUmVmKGdzdF9iaW5fZ2V0X2J5X25hbWUoR1NUX0JJTih2aWRl
b1NpbmsuZ2V0KCkpLCAidmlkZW9UZWUiKSk7CiAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBwbGF0
Zm9ybVZpZGVvU2luayA9IGFkb3B0R1JlZihnc3RfYmluX2dldF9ieV9uYW1lKEdTVF9CSU4odmlk
ZW9TaW5rLmdldCgpKSwgInBsYXRmb3JtVmlkZW9TaW5rIikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCBmMmRkOGVhM2FmNzY5ZjY1OWIx
ODI0MGVlMmUwNjgxNGI4YTgzOGMyLi5hYTU3MTVmNTUwYjE2MzRiMmU3YWQ5NDBkYmQ2NWEyN2I1
NjNhYjg5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtNjgwLDIwICs2ODAsMTggQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6Om5vdGlmeVBsYXllck9mVGV4dCgpCiAgICAgICAgIGdfb2JqZWN0X2dldChtX3BsYXlCaW4u
Z2V0KCksICJuLXRleHQiLCAmbnVtVHJhY2tzLCBOVUxMKTsKIAogICAgIGZvciAoZ2ludCBpID0g
MDsgaSA8IG51bVRyYWNrczsgKytpKSB7Ci0gICAgICAgIEdzdFBhZCogcGFkOwotICAgICAgICBn
X3NpZ25hbF9lbWl0X2J5X25hbWUobV9wbGF5QmluLmdldCgpLCAiZ2V0LXRleHQtcGFkIiwgaSwg
JnBhZCwgTlVMTCk7CisgICAgICAgIEdSZWZQdHI8R3N0UGFkPiBwYWQ7CisgICAgICAgIGdfc2ln
bmFsX2VtaXRfYnlfbmFtZShtX3BsYXlCaW4uZ2V0KCksICJnZXQtdGV4dC1wYWQiLCBpLCAmcGFk
Lm91dFB0cigpLCBOVUxMKTsKICAgICAgICAgQVNTRVJUKHBhZCk7CiAKICAgICAgICAgaWYgKGkg
PCBzdGF0aWNfY2FzdDxnaW50PihtX3RleHRUcmFja3Muc2l6ZSgpKSkgewogICAgICAgICAgICAg
UmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVHU3RyZWFtZXI+IGV4aXN0aW5nVHJhY2sgPSBt
X3RleHRUcmFja3NbaV07CiAgICAgICAgICAgICBleGlzdGluZ1RyYWNrLT5zZXRJbmRleChpKTsK
LSAgICAgICAgICAgIGlmIChleGlzdGluZ1RyYWNrLT5wYWQoKSA9PSBwYWQpIHsKLSAgICAgICAg
ICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKHBhZCk7CisgICAgICAgICAgICBpZiAoZXhpc3RpbmdU
cmFjay0+cGFkKCkgPT0gcGFkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAgfQogICAgICAgICB9CiAKLSAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZhdGVH
U3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRl
KGksIGFkb3B0R1JlZihwYWQpKTsKKyAgICAgICAgUmVmUHRyPEluYmFuZFRleHRUcmFja1ByaXZh
dGVHU3RyZWFtZXI+IHRyYWNrID0gSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUdTdHJlYW1lcjo6Y3Jl
YXRlKGksIHBhZCk7CiAgICAgICAgIG1fdGV4dFRyYWNrcy5pbnNlcnQoaSwgdHJhY2spOwogICAg
ICAgICBtX3BsYXllci0+YWRkVGV4dFRyYWNrKHRyYWNrLnJlbGVhc2UoKSk7CiAgICAgfQpAQCAt
NzE0LDggKzcxMiw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpuZXdUZXh0
U2FtcGxlKCkKICAgICBHUmVmUHRyPEdzdEV2ZW50PiBzdHJlYW1TdGFydEV2ZW50ID0gYWRvcHRH
UmVmKAogICAgICAgICBnc3RfcGFkX2dldF9zdGlja3lfZXZlbnQobV90ZXh0QXBwU2lua1BhZC5n
ZXQoKSwgR1NUX0VWRU5UX1NUUkVBTV9TVEFSVCwgMCkpOwogCi0gICAgR3N0U2FtcGxlKiBzYW1w
bGU7Ci0gICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fdGV4dEFwcFNpbmsuZ2V0KCksICJwdWxs
LXNhbXBsZSIsICZzYW1wbGUsIE5VTEwpOworICAgIEdSZWZQdHI8R3N0U2FtcGxlPiBzYW1wbGU7
CisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKG1fdGV4dEFwcFNpbmsuZ2V0KCksICJwdWxsLXNh
bXBsZSIsICZzYW1wbGUub3V0UHRyKCksIE5VTEwpOwogICAgIEFTU0VSVChzYW1wbGUpOwogCiAg
ICAgaWYgKHN0cmVhbVN0YXJ0RXZlbnQpIHsKQEAgLTczNCw3ICs3MzIsNiBAQCB2b2lkIE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6bmV3VGV4dFNhbXBsZSgpCiAgICAgICAgICAgICBXQVJO
X01FRElBX01FU1NBR0UoIkdvdCBzYW1wbGUgd2l0aCB1bmtub3duIHN0cmVhbSBJRC4iKTsKICAg
ICB9IGVsc2UKICAgICAgICAgV0FSTl9NRURJQV9NRVNTQUdFKCJVbmFibGUgdG8gaGFuZGxlIHNh
bXBsZSB3aXRoIG5vIHN0cmVhbSBzdGFydCBldmVudC4iKTsKLSAgICBnc3Rfc2FtcGxlX3VucmVm
KHNhbXBsZSk7CiB9CiAjZW5kaWYKIApAQCAtMTAwMCwxNSArOTk3LDEzIEBAIHZvaWQgTWVkaWFQ
bGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwcm9jZXNzVGFibGVPZkNvbnRlbnRzKEdzdE1lc3NhZ2Uq
IG1lc3NhZ2UpCiAgICAgbV9jaGFwdGVyc1RyYWNrID0gSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlR1N0cmVhbWVyOjpjcmVhdGUoSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZTo6Q2hhcHRlcnMp
OwogICAgIG1fcGxheWVyLT5hZGRUZXh0VHJhY2sobV9jaGFwdGVyc1RyYWNrKTsKIAotICAgIEdz
dFRvYyogdG9jOworICAgIEdSZWZQdHI8R3N0VG9jPiB0b2M7CiAgICAgZ2Jvb2xlYW4gdXBkYXRl
ZDsKLSAgICBnc3RfbWVzc2FnZV9wYXJzZV90b2MobWVzc2FnZSwgJnRvYywgJnVwZGF0ZWQpOwor
ICAgIGdzdF9tZXNzYWdlX3BhcnNlX3RvYyhtZXNzYWdlLCAmdG9jLm91dFB0cigpLCAmdXBkYXRl
ZCk7CiAgICAgQVNTRVJUKHRvYyk7CiAKLSAgICBmb3IgKEdMaXN0KiBpID0gZ3N0X3RvY19nZXRf
ZW50cmllcyh0b2MpOyBpOyBpID0gaS0+bmV4dCkKKyAgICBmb3IgKEdMaXN0KiBpID0gZ3N0X3Rv
Y19nZXRfZW50cmllcyh0b2MuZ2V0KCkpOyBpOyBpID0gaS0+bmV4dCkKICAgICAgICAgcHJvY2Vz
c1RhYmxlT2ZDb250ZW50c0VudHJ5KHN0YXRpY19jYXN0PEdzdFRvY0VudHJ5Kj4oaS0+ZGF0YSks
IDApOwotCi0gICAgZ3N0X3RvY191bnJlZih0b2MpOwogfQogCiB2b2lkIE1lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lcjo6cHJvY2Vzc1RhYmxlT2ZDb250ZW50c0VudHJ5KEdzdFRvY0VudHJ5KiBl
bnRyeSwgR3N0VG9jRW50cnkqIHBhcmVudCkKQEAgLTEyMDIsMTEgKzExOTcsOCBAQCB2b2lkIE1l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6dXBkYXRlQXVkaW9TaW5rKCkKICAgICBpZiAoIW1f
cGxheUJpbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgR3N0RWxlbWVudCogc2lua1B0ciA9IDA7
Ci0KLSAgICBnX29iamVjdF9nZXQobV9wbGF5QmluLmdldCgpLCAiYXVkaW8tc2luayIsICZzaW5r
UHRyLCBOVUxMKTsKLSAgICBtX3dlYmtpdEF1ZGlvU2luayA9IGFkb3B0R1JlZihzaW5rUHRyKTsK
LQorICAgIG1fd2Via2l0QXVkaW9TaW5rLmNsZWFyKCk7CisgICAgZ19vYmplY3RfZ2V0KG1fcGxh
eUJpbi5nZXQoKSwgImF1ZGlvLXNpbmsiLCAmbV93ZWJraXRBdWRpb1Npbmsub3V0UHRyKCksIE5V
TEwpOwogfQogCiBHc3RFbGVtZW50KiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmF1ZGlv
U2luaygpIGNvbnN0CkBAIC0xMjE2LDEwICsxMjA4LDggQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjphdWRpb1NpbmsoKSBjb25zdAogCiB2b2lkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6c291cmNlQ2hhbmdlZCgpCiB7Ci0gICAgR3N0RWxlbWVudCogc3Jj
UHRyID0gMDsKLQotICAgIGdfb2JqZWN0X2dldChtX3BsYXlCaW4uZ2V0KCksICJzb3VyY2UiLCAm
c3JjUHRyLCBOVUxMKTsKLSAgICBtX3NvdXJjZSA9IGFkb3B0R1JlZihzcmNQdHIpOworICAgIG1f
c291cmNlLmNsZWFyKCk7CisgICAgZ19vYmplY3RfZ2V0KG1fcGxheUJpbi5nZXQoKSwgInNvdXJj
ZSIsICZtX3NvdXJjZS5vdXRQdHIoKSwgTlVMTCk7CiAKICAgICBpZiAoV0VCS0lUX0lTX1dFQl9T
UkMobV9zb3VyY2UuZ2V0KCkpKQogICAgICAgICB3ZWJLaXRXZWJTcmNTZXRNZWRpYVBsYXllcihX
RUJLSVRfV0VCX1NSQyhtX3NvdXJjZS5nZXQoKSksIG1fcGxheWVyKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZh
dGVHU3RyZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCA3NTU3MDBl
NGMyNTY4YzUwOTEzZWM2M2MwOTNkNjgwZjczNzYwZDkzLi4wMjE3NjczNmI0YzY4OTlhOGIwNjY2
MGU3NzQ2MWU4OWY1NmIwM2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC01MTUsOSArNTE1LDkgQEAgR1JlZlB0cjxHc3RD
YXBzPiBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpjdXJyZW50VmlkZW9TaW5rQ2Fw
cygpIGNvbnN0CiAgICAgaWYgKCFtX3dlYmtpdFZpZGVvU2luaykKICAgICAgICAgcmV0dXJuIDA7
CiAKLSAgICBHc3RDYXBzKiBjdXJyZW50Q2FwcyA9IDA7Ci0gICAgZ19vYmplY3RfZ2V0KEdfT0JK
RUNUKG1fd2Via2l0VmlkZW9TaW5rLmdldCgpKSwgImN1cnJlbnQtY2FwcyIsICZjdXJyZW50Q2Fw
cywgTlVMTCk7Ci0gICAgcmV0dXJuIGFkb3B0R1JlZihjdXJyZW50Q2Fwcyk7CisgICAgR1JlZlB0
cjxHc3RDYXBzPiBjdXJyZW50Q2FwczsKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1QobV93ZWJr
aXRWaWRlb1NpbmsuZ2V0KCkpLCAiY3VycmVudC1jYXBzIiwgJmN1cnJlbnRDYXBzLm91dFB0cigp
LCBOVUxMKTsKKyAgICByZXR1cm4gY3VycmVudENhcHM7CiB9CiAKIC8vIFRoaXMgZnVuY3Rpb24g
Y3JlYXRlcyBhbmQgaW5pdGlhbGl6ZXMgc29tZSBpbnRlcm5hbCB2YXJpYWJsZXMsIGFuZCByZXR1
cm5zIGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZUhhbmRsZVNvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKaW5kZXggODQ2ZTI1YThjZjUzODEwYjQ5OTQyM2Nk
NmE1NGEwYTJiMWVhMmUxMC4uNGM4ODIxNjk5YWI0MWNmYTE5ODM2NjQ5NjE4MzM4MWFlODdkNjI3
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlSGFuZGxlU291cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9z
b3VwL1Jlc291cmNlSGFuZGxlU291cC5jcHAKQEAgLTIwMCwxMyArMjAwLDEyIEBAIHB1YmxpYzoK
IHByaXZhdGU6CiAgICAgc3RhdGljIFN0cmluZyBjb21wdXRlQ2VydGlmaWNhdGVIYXNoKEdUbHND
ZXJ0aWZpY2F0ZSogY2VydGlmaWNhdGUpCiAgICAgewotICAgICAgICBHQnl0ZUFycmF5KiBkYXRh
ID0gMDsKLSAgICAgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKGNlcnRpZmljYXRlKSwgImNlcnRp
ZmljYXRlIiwgJmRhdGEsIE5VTEwpOwotICAgICAgICBpZiAoIWRhdGEpCisgICAgICAgIEdSZWZQ
dHI8R0J5dGVBcnJheT4gY2VydGlmaWNhdGVEYXRhOworICAgICAgICBnX29iamVjdF9nZXQoR19P
QkpFQ1QoY2VydGlmaWNhdGUpLCAiY2VydGlmaWNhdGUiLCAmY2VydGlmaWNhdGVEYXRhLm91dFB0
cigpLCBOVUxMKTsKKyAgICAgICAgaWYgKCFjZXJ0aWZpY2F0ZURhdGEpCiAgICAgICAgICAgICBy
ZXR1cm4gU3RyaW5nKCk7CiAKICAgICAgICAgc3RhdGljIGNvbnN0IHNpemVfdCBzaGExSGFzaFNp
emUgPSAyMDsKLSAgICAgICAgR1JlZlB0cjxHQnl0ZUFycmF5PiBjZXJ0aWZpY2F0ZURhdGEgPSBh
ZG9wdEdSZWYoZGF0YSk7CiAgICAgICAgIFNIQTEgc2hhMTsKICAgICAgICAgc2hhMS5hZGRCeXRl
cyhjZXJ0aWZpY2F0ZURhdGEtPmRhdGEsIGNlcnRpZmljYXRlRGF0YS0+bGVuKTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>