<?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>154285</bug_id>
          
          <creation_ts>2016-02-16 03:57:30 -0800</creation_ts>
          <short_desc>[GStreamer] clean-up various leaks</short_desc>
          <delta_ts>2016-02-22 07:49:28 -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>Platform</component>
          <version>Other</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="Philippe Normand">pnormand</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>pnormand</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1165108</commentid>
    <comment_count>0</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-02-16 03:57:30 -0800</bug_when>
    <thetext>Some of the ASSERTS in GRefPtrGStreamer don&apos;t check null pointers, they should.
Besides, we should use adoptGRef for the GstElementFactory GRefPtrs in MediaPlayerPrivateGStreamer.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165116</commentid>
    <comment_count>1</comment_count>
      <attachid>271425</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-02-16 04:48:49 -0800</bug_when>
    <thetext>Created attachment 271425
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165118</commentid>
    <comment_count>2</comment_count>
      <attachid>271425</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-02-16 04:58:50 -0800</bug_when>
    <thetext>Comment on attachment 271425
patch

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

&gt; Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:196
&gt; +    priv-&gt;task = adoptGRef(gst_task_new(reinterpret_cast&lt;GstTaskFunction&gt;(webKitWebAudioSrcLoop), src, 0));

GstTask is GInitiallyUnowned, so this returns a floating reference that we should consume here, so adoptGRef is not correct. Aren&apos;t you hitting the assert in GRefPtr&lt;GstTask&gt; adoptGRef(GstTask* ptr) ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165121</commentid>
    <comment_count>3</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-02-16 06:04:02 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 271425 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271425&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:196
&gt; &gt; +    priv-&gt;task = adoptGRef(gst_task_new(reinterpret_cast&lt;GstTaskFunction&gt;(webKitWebAudioSrcLoop), src, 0));
&gt; 
&gt; GstTask is GInitiallyUnowned, so this returns a floating reference that we
&gt; should consume here, so adoptGRef is not correct. Aren&apos;t you hitting the
&gt; assert in GRefPtr&lt;GstTask&gt; adoptGRef(GstTask* ptr) ?

Heh. No :)
But I&apos;ll double-check.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166131</commentid>
    <comment_count>4</comment_count>
      <attachid>271425</attachid>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-18 12:27:19 -0800</bug_when>
    <thetext>Comment on attachment 271425
patch

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

&gt;&gt;&gt; Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:196
&gt;&gt;&gt; +    priv-&gt;task = adoptGRef(gst_task_new(reinterpret_cast&lt;GstTaskFunction&gt;(webKitWebAudioSrcLoop), src, 0));
&gt;&gt; 
&gt;&gt; GstTask is GInitiallyUnowned, so this returns a floating reference that we should consume here, so adoptGRef is not correct. Aren&apos;t you hitting the assert in GRefPtr&lt;GstTask&gt; adoptGRef(GstTask* ptr) ?
&gt; 
&gt; Heh. No :)
&gt; But I&apos;ll double-check.

This should be adoptGRef(g_object_ref_sink(gst_task_new(...))), correct?

I think floating references are not useful in combination with GRefPtr, so why don&apos;t we take it always in adoptGRef() (e.g. by calling g_object_is_floating() and then g_object_ref_sink() if that return TRUE)? What is the value in asserting that the ptr is not floating? (Why do we do that only in GRefPtrGStreamer.cpp and not in GRefPtr.cpp?) Am I missing something here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166346</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-02-18 23:19:49 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 271425 [details]
&gt; patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271425&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:196
&gt; &gt;&gt;&gt; +    priv-&gt;task = adoptGRef(gst_task_new(reinterpret_cast&lt;GstTaskFunction&gt;(webKitWebAudioSrcLoop), src, 0));
&gt; &gt;&gt; 
&gt; &gt;&gt; GstTask is GInitiallyUnowned, so this returns a floating reference that we should consume here, so adoptGRef is not correct. Aren&apos;t you hitting the assert in GRefPtr&lt;GstTask&gt; adoptGRef(GstTask* ptr) ?
&gt; &gt; 
&gt; &gt; Heh. No :)
&gt; &gt; But I&apos;ll double-check.
&gt; 
&gt; This should be adoptGRef(g_object_ref_sink(gst_task_new(...))), correct?

No.

&gt; I think floating references are not useful in combination with GRefPtr, so
&gt; why don&apos;t we take it always in adoptGRef() (e.g. by calling
&gt; g_object_is_floating() and then g_object_ref_sink() if that return TRUE)?

Because in that case you are not adopting the ref, but consuming the floating reference.

&gt; What is the value in asserting that the ptr is not floating? (Why do we do
&gt; that only in GRefPtrGStreamer.cpp and not in GRefPtr.cpp?) Am I missing
&gt; something here?

Because we want to prevent misuses of GRefPtr with floating references. You should never adopt a floating reference. I think we only do this in GRefPtrGStreamer because GstObject is GInitiallyUnowned, so we know all gst classes are using floating references. Since this seems to be a bit confusing, I&apos;ve tried to clarify it and written this http://trac.webkit.org/wiki/WebKitGTK/GRefPtrAndFloatingRefs. I hope it helps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166373</commentid>
    <comment_count>6</comment_count>
      <attachid>271425</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-02-19 02:13:50 -0800</bug_when>
    <thetext>Comment on attachment 271425
patch

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

&gt;&gt;&gt;&gt;&gt; Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp:196
&gt;&gt;&gt;&gt;&gt; -    priv-&gt;task = gst_task_new(reinterpret_cast&lt;GstTaskFunction&gt;(webKitWebAudioSrcLoop), src, 0);
&gt;&gt;&gt;&gt;&gt; +    priv-&gt;task = adoptGRef(gst_task_new(reinterpret_cast&lt;GstTaskFunction&gt;(webKitWebAudioSrcLoop), src, 0));
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; GstTask is GInitiallyUnowned, so this returns a floating reference that we should consume here, so adoptGRef is not correct. Aren&apos;t you hitting the assert in GRefPtr&lt;GstTask&gt; adoptGRef(GstTask* ptr) ?
&gt;&gt;&gt; 
&gt;&gt;&gt; Heh. No :)
&gt;&gt;&gt; But I&apos;ll double-check.
&gt;&gt; 
&gt;&gt; This should be adoptGRef(g_object_ref_sink(gst_task_new(...))), correct?
&gt;&gt; 
&gt;&gt; I think floating references are not useful in combination with GRefPtr, so why don&apos;t we take it always in adoptGRef() (e.g. by calling g_object_is_floating() and then g_object_ref_sink() if that return TRUE)? What is the value in asserting that the ptr is not floating? (Why do we do that only in GRefPtrGStreamer.cpp and not in GRefPtr.cpp?) Am I missing something here?
&gt; 
&gt; No.

So, the thing is that gst_task_init is consuming its own floating ref. This is soooo confusing. Please, add a comment here explaining why we are adopting the ref returned by gst_task_new().

&gt; Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp:127
&gt; +    ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));

no need to cast to GObject, g_object_is_floating expects a gpointer.

&gt; Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp:147
&gt; +    ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));

ditto.

&gt; Source/WebCore/platform/graphics/gstreamer/GRefPtrGStreamer.cpp:167
&gt; +    ASSERT(!ptr || !g_object_is_floating(G_OBJECT(ptr)));

ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166377</commentid>
    <comment_count>7</comment_count>
      <attachid>271743</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-02-19 02:24:14 -0800</bug_when>
    <thetext>Created attachment 271743
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166378</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2016-02-19 02:30:26 -0800</bug_when>
    <thetext>Committed r196809: &lt;http://trac.webkit.org/changeset/196809&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1167014</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2016-02-22 07:49:28 -0800</bug_when>
    <thetext>(In reply to comment #5) 
&gt; Because we want to prevent misuses of GRefPtr with floating references. You
&gt; should never adopt a floating reference. I think we only do this in
&gt; GRefPtrGStreamer because GstObject is GInitiallyUnowned, so we know all gst
&gt; classes are using floating references. Since this seems to be a bit
&gt; confusing, I&apos;ve tried to clarify it and written this
&gt; http://trac.webkit.org/wiki/WebKitGTK/GRefPtrAndFloatingRefs. I hope it
&gt; helps.

Yes, thank you!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271425</attachid>
            <date>2016-02-16 04:48:49 -0800</date>
            <delta_ts>2016-02-19 02:24:14 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>5175</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSBiZjNiMTI5NjM4OGE3MDNjNmVmNTFjYWY0MmEyNjM4ZGY0YzQwOGYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE2IEZlYiAyMDE2IDEzOjQ3OjQ2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
cGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgMTUgKysrKysrKysrKysrKysrCiAuLi4vYXVkaW8vZ3N0cmVhbWVyL1dl
YktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcCAgICAgfCAgMiArLQogLi4uL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcCAgICAgIHwgIDYgKysrLS0t
CiAuLi4vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAg
ICAgfCAgNiArKystLS0KIDQgZmlsZXMgY2hhbmdlZCwgMjIgaW5zZXJ0aW9ucygrKSwgNyBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMGQ4YjE5My4uYTNiMTE1YiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE4IEBACisyMDE2LTAyLTE2ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1N0cmVhbWVyXSBjbGVhbi11cCB2YXJpb3VzIGxlYWtzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQyODUKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHBsYXRmb3Jt
L2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHA6CisgICAg
ICAgICh3ZWJraXRfd2ViX2F1ZGlvX3NyY19pbml0KTogVGFrZSBmdWxsIG93bmVyc2hpcCBvZiB0
aGUgR3N0VGFzay4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0
ckdTdHJlYW1lci5jcHA6CisgICAgICAgIChXVEY6OmFkb3B0R1JlZik6IE51bGwgcG9pbnRlciBz
dXBwb3J0IGluIEFTU0VSVHMuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjppbml0
aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cyk6IFRha2UgZnVsbCBvd25l
cnNoaXAgb2YgdGhlIEdzdEVsZW1lbnRGYWN0b3J5IHBvaW50ZXJzLgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppc0F2YWlsYWJsZSk6IERpdHRvLgorCiAy
MDE2LTAyLTE2ICBBbmRyZWFzIEtsaW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBE
cm9wIFN0eWxlUmVzb2x2ZXIgYW5kIFNlbGVjdG9yUXVlcnlDYWNoZSB3aGVuIGVudGVyaW5nIFBh
Z2VDYWNoZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2F1ZGlvL2dzdHJl
YW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3Bw
CmluZGV4IDRkOTJjMTEuLjEzZjZlOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0cmVhbWVyL1dlYktpdFdlYkF1ZGlv
U291cmNlR1N0cmVhbWVyLmNwcApAQCAtMTkzLDcgKzE5Myw3IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfYXVkaW9fc3JjX2luaXQoV2ViS2l0V2ViQXVkaW9TcmMqIHNyYykKICAgICBwcml2LT5i
dXMgPSAwOwogCiAgICAgZ19yZWNfbXV0ZXhfaW5pdCgmcHJpdi0+bXV0ZXgpOwotICAgIHByaXYt
PnRhc2sgPSBnc3RfdGFza19uZXcocmVpbnRlcnByZXRfY2FzdDxHc3RUYXNrRnVuY3Rpb24+KHdl
YktpdFdlYkF1ZGlvU3JjTG9vcCksIHNyYywgMCk7CisgICAgcHJpdi0+dGFzayA9IGFkb3B0R1Jl
Zihnc3RfdGFza19uZXcocmVpbnRlcnByZXRfY2FzdDxHc3RUYXNrRnVuY3Rpb24+KHdlYktpdFdl
YkF1ZGlvU3JjTG9vcCksIHNyYywgMCkpOwogCiAgICAgZ3N0X3Rhc2tfc2V0X2xvY2socHJpdi0+
dGFzay5nZXQoKSwgJnByaXYtPm11dGV4KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNw
cAppbmRleCBlNjQyOTQ3Li4yNTYwMjkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3Bw
CkBAIC0xMjQsNyArMTI0LDcgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHI8R3N0Q29udGV4
dD4oR3N0Q29udGV4dCogcHRyKQogCiB0ZW1wbGF0ZSA8PiBHUmVmUHRyPEdzdFRhc2s+IGFkb3B0
R1JlZihHc3RUYXNrKiBwdHIpCiB7Ci0gICAgQVNTRVJUKCFnX29iamVjdF9pc19mbG9hdGluZyhH
X09CSkVDVChwdHIpKSk7CisgICAgQVNTRVJUKCFwdHIgfHwgIWdfb2JqZWN0X2lzX2Zsb2F0aW5n
KEdfT0JKRUNUKHB0cikpKTsKICAgICByZXR1cm4gR1JlZlB0cjxHc3RUYXNrPihwdHIsIEdSZWZQ
dHJBZG9wdCk7CiB9CiAKQEAgLTE0NCw3ICsxNDQsNyBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVm
R1B0cjxHc3RUYXNrPihHc3RUYXNrKiBwdHIpCiAKIHRlbXBsYXRlIDw+IEdSZWZQdHI8R3N0QnVz
PiBhZG9wdEdSZWYoR3N0QnVzKiBwdHIpCiB7Ci0gICAgQVNTRVJUKCFnX29iamVjdF9pc19mbG9h
dGluZyhHX09CSkVDVChwdHIpKSk7CisgICAgQVNTRVJUKCFwdHIgfHwgIWdfb2JqZWN0X2lzX2Zs
b2F0aW5nKEdfT0JKRUNUKHB0cikpKTsKICAgICByZXR1cm4gR1JlZlB0cjxHc3RCdXM+KHB0ciwg
R1JlZlB0ckFkb3B0KTsKIH0KIApAQCAtMTY0LDcgKzE2NCw3IEBAIHRlbXBsYXRlIDw+IHZvaWQg
ZGVyZWZHUHRyPEdzdEJ1cz4oR3N0QnVzKiBwdHIpCiAKIHRlbXBsYXRlIDw+IEdSZWZQdHI8R3N0
RWxlbWVudEZhY3Rvcnk+IGFkb3B0R1JlZihHc3RFbGVtZW50RmFjdG9yeSogcHRyKQogewotICAg
IEFTU0VSVCghZ19vYmplY3RfaXNfZmxvYXRpbmcoR19PQkpFQ1QocHRyKSkpOworICAgIEFTU0VS
VCghcHRyIHx8ICFnX29iamVjdF9pc19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CiAgICAgcmV0
dXJuIEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+KHB0ciwgR1JlZlB0ckFkb3B0KTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA4
YTMzYTZjLi43NWJiNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcApAQCAtMTA3LDE0ICsxMDcsMTQgQEAgYm9vbCBpbml0aWFsaXplR1N0cmVh
bWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpCiAgICAgaWYgKCFpbml0aWFsaXplR1N0cmVh
bWVyKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudEZh
Y3Rvcnk+IHNyY0ZhY3RvcnkgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQoIndlYmtpdHdlYnNy
YyIpOworICAgIEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IHNyY0ZhY3RvcnkgPSBhZG9wdEdS
ZWYoZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kKCJ3ZWJraXR3ZWJzcmMiKSk7CiAgICAgaWYgKCFz
cmNGYWN0b3J5KSB7CiAgICAgICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9tZWRp
YV9wbGF5ZXJfZGVidWcsICJ3ZWJraXRtZWRpYXBsYXllciIsIDAsICJXZWJLaXQgbWVkaWEgcGxh
eWVyIik7CiAgICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXR3ZWJzcmMiLCBH
U1RfUkFOS19QUklNQVJZICsgMTAwLCBXRUJLSVRfVFlQRV9XRUJfU1JDKTsKICAgICB9CiAKICNp
ZiBFTkFCTEUoTUVESUFfU09VUkNFKQotICAgIEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IFdl
YktpdE1lZGlhU3JjRmFjdG9yeSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfZmluZCgid2Via2l0bWVk
aWFzcmMiKTsKKyAgICBHUmVmUHRyPEdzdEVsZW1lbnRGYWN0b3J5PiBXZWJLaXRNZWRpYVNyY0Zh
Y3RvcnkgPSBhZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kKCJ3ZWJraXRtZWRpYXNy
YyIpKTsKICAgICBpZiAoIVdlYktpdE1lZGlhU3JjRmFjdG9yeSkKICAgICAgICAgZ3N0X2VsZW1l
bnRfcmVnaXN0ZXIoMCwgIndlYmtpdG1lZGlhc3JjIiwgR1NUX1JBTktfUFJJTUFSWSArIDEwMCwg
V0VCS0lUX1RZUEVfTUVESUFfU1JDKTsKICNlbmRpZgpAQCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjppc0F2YWlsYWJsZSgpCiAgICAgaWYgKCFpbml0
aWFsaXplR1N0cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnRGYWN0b3J5PiBmYWN0b3J5ID0gZ3N0
X2VsZW1lbnRfZmFjdG9yeV9maW5kKCJwbGF5YmluIik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50
RmFjdG9yeT4gZmFjdG9yeSA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQoInBs
YXliaW4iKSk7CiAgICAgcmV0dXJuIGZhY3Rvcnk7CiB9CiAKLS0gCjIuNy4w
</data>
<flag name="review"
          id="296239"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271743</attachid>
            <date>2016-02-19 02:24:14 -0800</date>
            <delta_ts>2016-02-19 02:27:33 -0800</delta_ts>
            <desc>patch</desc>
            <filename>patch.patch</filename>
            <type>text/plain</type>
            <size>6990</size>
            <attacher name="Philippe Normand">pnormand</attacher>
            
              <data encoding="base64">RnJvbSAwZTY2ZTc3MzRlYjU1MjdkYmU0NzcyMzc3NGE4NGQwNmVmYzgyNjkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBQaGlsaXBwZSBOb3JtYW5kIDxwbm9ybWFuZEBpZ2FsaWEuY29t
PgpEYXRlOiBUdWUsIDE2IEZlYiAyMDE2IDEzOjQ3OjQ2ICswMTAwClN1YmplY3Q6IFtQQVRDSF0g
cGF0Y2gKCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfCAxNSArKysrKysrKysrKysrKysKIC4uLi9hdWRpby9nc3RyZWFtZXIvV2ViS2l0
V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwIHwgIDIgKy0KIC4uLi9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAgIHwgMTkgKysrKysrKysrKy0tLS0tLS0t
LQogLi4uL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwICAgICAgICAg
fCAgNiArKystLS0KIDQgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRp
b25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dl
YkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIyMjUyODkuLmNiNTQ4ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxOCBAQAorMjAxNi0wMi0xNiAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dTdHJlYW1lcl0gY2xlYW4tdXAgdmFyaW91cyBsZWFrcworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU0Mjg1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9h
dWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwOgorICAgICAg
ICAod2Via2l0X3dlYl9hdWRpb19zcmNfaW5pdCk6IFRha2UgZnVsbCBvd25lcnNoaXAgb2YgdGhl
IEdzdFRhc2suCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0dSZWZQdHJH
U3RyZWFtZXIuY3BwOgorICAgICAgICAoV1RGOjphZG9wdEdSZWYpOiBOdWxsIHBvaW50ZXIgc3Vw
cG9ydCBpbiBBU1NFUlRzLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6aW5pdGlh
bGl6ZUdTdHJlYW1lckFuZFJlZ2lzdGVyV2ViS2l0RWxlbWVudHMpOiBUYWtlIGZ1bGwgb3duZXJz
aGlwIG9mIHRoZSBHc3RFbGVtZW50RmFjdG9yeSBwb2ludGVycy4KKyAgICAgICAgKFdlYkNvcmU6
Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6aXNBdmFpbGFibGUpOiBEaXR0by4KKwogMjAx
Ni0wMi0xOCAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2ZXJ0
IHRvIGRpc3BhdGNoaW5nIHRoZSBwb3BzdGF0ZSBldmVudCBzeW5jaHJvbm91c2x5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFtZXIvV2ViS2l0V2ViQXVk
aW9Tb3VyY2VHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vYXVkaW8vZ3N0
cmVhbWVyL1dlYktpdFdlYkF1ZGlvU291cmNlR1N0cmVhbWVyLmNwcAppbmRleCA0ZDkyYzExLi4x
M2Y2ZThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9hdWRpby9nc3RyZWFt
ZXIvV2ViS2l0V2ViQXVkaW9Tb3VyY2VHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2F1ZGlvL2dzdHJlYW1lci9XZWJLaXRXZWJBdWRpb1NvdXJjZUdTdHJlYW1lci5j
cHAKQEAgLTE5Myw3ICsxOTMsNyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX2F1ZGlvX3NyY19p
bml0KFdlYktpdFdlYkF1ZGlvU3JjKiBzcmMpCiAgICAgcHJpdi0+YnVzID0gMDsKIAogICAgIGdf
cmVjX211dGV4X2luaXQoJnByaXYtPm11dGV4KTsKLSAgICBwcml2LT50YXNrID0gZ3N0X3Rhc2tf
bmV3KHJlaW50ZXJwcmV0X2Nhc3Q8R3N0VGFza0Z1bmN0aW9uPih3ZWJLaXRXZWJBdWRpb1NyY0xv
b3ApLCBzcmMsIDApOworICAgIHByaXYtPnRhc2sgPSBhZG9wdEdSZWYoZ3N0X3Rhc2tfbmV3KHJl
aW50ZXJwcmV0X2Nhc3Q8R3N0VGFza0Z1bmN0aW9uPih3ZWJLaXRXZWJBdWRpb1NyY0xvb3ApLCBz
cmMsIDApKTsKIAogICAgIGdzdF90YXNrX3NldF9sb2NrKHByaXYtPnRhc2suZ2V0KCksICZwcml2
LT5tdXRleCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvR1JlZlB0ckdTdHJlYW1lci5jcHAKaW5kZXggZTY0Mjk0Ny4u
NDcxMTNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL0dSZWZQdHJHU3RyZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HUmVmUHRyR1N0cmVhbWVyLmNwcApAQCAtMjcsNyArMjcsNyBA
QCBuYW1lc3BhY2UgV1RGIHsKIAogdGVtcGxhdGUgPD4gR1JlZlB0cjxHc3RFbGVtZW50PiBhZG9w
dEdSZWYoR3N0RWxlbWVudCogcHRyKQogewotICAgIEFTU0VSVCghcHRyIHx8ICFnX29iamVjdF9p
c19mbG9hdGluZyhHX09CSkVDVChwdHIpKSk7CisgICAgQVNTRVJUKCFwdHIgfHwgIWdfb2JqZWN0
X2lzX2Zsb2F0aW5nKHB0cikpOwogICAgIHJldHVybiBHUmVmUHRyPEdzdEVsZW1lbnQ+KHB0ciwg
R1JlZlB0ckFkb3B0KTsKIH0KIApAQCAtNDcsNyArNDcsNyBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRl
cmVmR1B0cjxHc3RFbGVtZW50PihHc3RFbGVtZW50KiBwdHIpCiAKIHRlbXBsYXRlIDw+IEdSZWZQ
dHI8R3N0UGFkPiBhZG9wdEdSZWYoR3N0UGFkKiBwdHIpCiB7Ci0gICAgQVNTRVJUKCFwdHIgfHwg
IWdfb2JqZWN0X2lzX2Zsb2F0aW5nKEdfT0JKRUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIXB0ciB8
fCAhZ19vYmplY3RfaXNfZmxvYXRpbmcocHRyKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0UGFk
PihwdHIsIEdSZWZQdHJBZG9wdCk7CiB9CiAKQEAgLTY3LDcgKzY3LDcgQEAgdGVtcGxhdGUgPD4g
dm9pZCBkZXJlZkdQdHI8R3N0UGFkPihHc3RQYWQqIHB0cikKIAogdGVtcGxhdGUgPD4gR1JlZlB0
cjxHc3RQYWRUZW1wbGF0ZT4gYWRvcHRHUmVmKEdzdFBhZFRlbXBsYXRlKiBwdHIpCiB7Ci0gICAg
QVNTRVJUKCFwdHIgfHwgIWdfb2JqZWN0X2lzX2Zsb2F0aW5nKEdfT0JKRUNUKHB0cikpKTsKKyAg
ICBBU1NFUlQoIXB0ciB8fCAhZ19vYmplY3RfaXNfZmxvYXRpbmcocHRyKSk7CiAgICAgcmV0dXJu
IEdSZWZQdHI8R3N0UGFkVGVtcGxhdGU+KHB0ciwgR1JlZlB0ckFkb3B0KTsKIH0KIApAQCAtMTA1
LDcgKzEwNSw3IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRyPEdzdENhcHM+KEdzdENhcHMq
IHB0cikKIAogdGVtcGxhdGUgPD4gR1JlZlB0cjxHc3RDb250ZXh0PiBhZG9wdEdSZWYoR3N0Q29u
dGV4dCogcHRyKQogewotICAgIEFTU0VSVCghZ19vYmplY3RfaXNfZmxvYXRpbmcoR19PQkpFQ1Qo
cHRyKSkpOworICAgIEFTU0VSVCghZ19vYmplY3RfaXNfZmxvYXRpbmcocHRyKSk7CiAgICAgcmV0
dXJuIEdSZWZQdHI8R3N0Q29udGV4dD4ocHRyLCBHUmVmUHRyQWRvcHQpOwogfQogCkBAIC0xMjQs
NyArMTI0LDggQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHI8R3N0Q29udGV4dD4oR3N0Q29u
dGV4dCogcHRyKQogCiB0ZW1wbGF0ZSA8PiBHUmVmUHRyPEdzdFRhc2s+IGFkb3B0R1JlZihHc3RU
YXNrKiBwdHIpCiB7Ci0gICAgQVNTRVJUKCFnX29iamVjdF9pc19mbG9hdGluZyhHX09CSkVDVChw
dHIpKSk7CisgICAgLy8gVGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjayB0aGUgb2JqZWN0IHJlZmVy
ZW5jZSBpcyBmbG9hdGluZyBoZXJlIGJlY2F1c2UKKyAgICAvLyBnc3RfdGFza19pbml0KCkgYWx3
YXlzIHNpbmtzIGl0LgogICAgIHJldHVybiBHUmVmUHRyPEdzdFRhc2s+KHB0ciwgR1JlZlB0ckFk
b3B0KTsKIH0KIApAQCAtMTQ0LDcgKzE0NSw3IEBAIHRlbXBsYXRlIDw+IHZvaWQgZGVyZWZHUHRy
PEdzdFRhc2s+KEdzdFRhc2sqIHB0cikKIAogdGVtcGxhdGUgPD4gR1JlZlB0cjxHc3RCdXM+IGFk
b3B0R1JlZihHc3RCdXMqIHB0cikKIHsKLSAgICBBU1NFUlQoIWdfb2JqZWN0X2lzX2Zsb2F0aW5n
KEdfT0JKRUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIXB0ciB8fCAhZ19vYmplY3RfaXNfZmxvYXRp
bmcocHRyKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0QnVzPihwdHIsIEdSZWZQdHJBZG9wdCk7
CiB9CiAKQEAgLTE2NCw3ICsxNjUsNyBAQCB0ZW1wbGF0ZSA8PiB2b2lkIGRlcmVmR1B0cjxHc3RC
dXM+KEdzdEJ1cyogcHRyKQogCiB0ZW1wbGF0ZSA8PiBHUmVmUHRyPEdzdEVsZW1lbnRGYWN0b3J5
PiBhZG9wdEdSZWYoR3N0RWxlbWVudEZhY3RvcnkqIHB0cikKIHsKLSAgICBBU1NFUlQoIWdfb2Jq
ZWN0X2lzX2Zsb2F0aW5nKEdfT0JKRUNUKHB0cikpKTsKKyAgICBBU1NFUlQoIXB0ciB8fCAhZ19v
YmplY3RfaXNfZmxvYXRpbmcocHRyKSk7CiAgICAgcmV0dXJuIEdSZWZQdHI8R3N0RWxlbWVudEZh
Y3Rvcnk+KHB0ciwgR1JlZlB0ckFkb3B0KTsKIH0KIApAQCAtMzE3LDcgKzMxOCw3IEBAIHRlbXBs
YXRlPD4gdm9pZCBkZXJlZkdQdHI8R3N0TWVzc2FnZT4oR3N0TWVzc2FnZSogcHRyKQogCiB0ZW1w
bGF0ZSA8PiBHUmVmUHRyPFdlYktpdFZpZGVvU2luaz4gYWRvcHRHUmVmKFdlYktpdFZpZGVvU2lu
ayogcHRyKQogewotICAgIEFTU0VSVCghcHRyIHx8ICFnX29iamVjdF9pc19mbG9hdGluZyhHX09C
SkVDVChwdHIpKSk7CisgICAgQVNTRVJUKCFwdHIgfHwgIWdfb2JqZWN0X2lzX2Zsb2F0aW5nKHB0
cikpOwogICAgIHJldHVybiBHUmVmUHRyPFdlYktpdFZpZGVvU2luaz4ocHRyLCBHUmVmUHRyQWRv
cHQpOwogfQogCkBAIC0zMzcsNyArMzM4LDcgQEAgdGVtcGxhdGUgPD4gdm9pZCBkZXJlZkdQdHI8
V2ViS2l0VmlkZW9TaW5rPihXZWJLaXRWaWRlb1NpbmsqIHB0cikKIAogdGVtcGxhdGUgPD4gR1Jl
ZlB0cjxXZWJLaXRXZWJTcmM+IGFkb3B0R1JlZihXZWJLaXRXZWJTcmMqIHB0cikKIHsKLSAgICBB
U1NFUlQoIXB0ciB8fCAhZ19vYmplY3RfaXNfZmxvYXRpbmcoR19PQkpFQ1QocHRyKSkpOworICAg
IEFTU0VSVCghcHRyIHx8ICFnX29iamVjdF9pc19mbG9hdGluZyhwdHIpKTsKICAgICByZXR1cm4g
R1JlZlB0cjxXZWJLaXRXZWJTcmM+KHB0ciwgR1JlZlB0ckFkb3B0KTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAppbmRleCA4YTMzYTZjLi43
NWJiNTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3Ry
ZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
LmNwcApAQCAtMTA3LDE0ICsxMDcsMTQgQEAgYm9vbCBpbml0aWFsaXplR1N0cmVhbWVyQW5kUmVn
aXN0ZXJXZWJLaXRFbGVtZW50cygpCiAgICAgaWYgKCFpbml0aWFsaXplR1N0cmVhbWVyKCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IHNy
Y0ZhY3RvcnkgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQoIndlYmtpdHdlYnNyYyIpOworICAg
IEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IHNyY0ZhY3RvcnkgPSBhZG9wdEdSZWYoZ3N0X2Vs
ZW1lbnRfZmFjdG9yeV9maW5kKCJ3ZWJraXR3ZWJzcmMiKSk7CiAgICAgaWYgKCFzcmNGYWN0b3J5
KSB7CiAgICAgICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUKHdlYmtpdF9tZWRpYV9wbGF5ZXJf
ZGVidWcsICJ3ZWJraXRtZWRpYXBsYXllciIsIDAsICJXZWJLaXQgbWVkaWEgcGxheWVyIik7CiAg
ICAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyKDAsICJ3ZWJraXR3ZWJzcmMiLCBHU1RfUkFOS19Q
UklNQVJZICsgMTAwLCBXRUJLSVRfVFlQRV9XRUJfU1JDKTsKICAgICB9CiAKICNpZiBFTkFCTEUo
TUVESUFfU09VUkNFKQotICAgIEdSZWZQdHI8R3N0RWxlbWVudEZhY3Rvcnk+IFdlYktpdE1lZGlh
U3JjRmFjdG9yeSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfZmluZCgid2Via2l0bWVkaWFzcmMiKTsK
KyAgICBHUmVmUHRyPEdzdEVsZW1lbnRGYWN0b3J5PiBXZWJLaXRNZWRpYVNyY0ZhY3RvcnkgPSBh
ZG9wdEdSZWYoZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kKCJ3ZWJraXRtZWRpYXNyYyIpKTsKICAg
ICBpZiAoIVdlYktpdE1lZGlhU3JjRmFjdG9yeSkKICAgICAgICAgZ3N0X2VsZW1lbnRfcmVnaXN0
ZXIoMCwgIndlYmtpdG1lZGlhc3JjIiwgR1NUX1JBTktfUFJJTUFSWSArIDEwMCwgV0VCS0lUX1RZ
UEVfTUVESUFfU1JDKTsKICNlbmRpZgpAQCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wgTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjppc0F2YWlsYWJsZSgpCiAgICAgaWYgKCFpbml0aWFsaXplR1N0
cmVhbWVyQW5kUmVnaXN0ZXJXZWJLaXRFbGVtZW50cygpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1lbnRGYWN0b3J5PiBmYWN0b3J5ID0gZ3N0X2VsZW1lbnRf
ZmFjdG9yeV9maW5kKCJwbGF5YmluIik7CisgICAgR1JlZlB0cjxHc3RFbGVtZW50RmFjdG9yeT4g
ZmFjdG9yeSA9IGFkb3B0R1JlZihnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQoInBsYXliaW4iKSk7
CiAgICAgcmV0dXJuIGZhY3Rvcnk7CiB9CiAKLS0gCjIuNy4w
</data>
<flag name="review"
          id="296573"
          type_id="1"
          status="+"
          setter="cgarcia"
    />
          </attachment>
      

    </bug>

</bugzilla>