<?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>79795</bug_id>
          
          <creation_ts>2012-02-28 08:07:51 -0800</creation_ts>
          <short_desc>Unreleased gst_object_reference to audio sink in MediaPlayerPrivateGStreamer</short_desc>
          <delta_ts>2012-03-06 10:15:22 -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>Media</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>0</everconfirmed>
          <reporter name="David Corvoysier">david.corvoysier</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>gustavo</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
    
    <cc>pnormand</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>566690</commentid>
    <comment_count>0</comment_count>
    <who name="David Corvoysier">david.corvoysier</who>
    <bug_when>2012-02-28 08:07:51 -0800</bug_when>
    <thetext>The MediaPlayerPrivateGStreamer object holds a reference to the underlying pipeline audio sink stored in m_webkitAudioSink (see MediaPlayerPrivateGStreamer::updateAudioSink()).
The trouble is that, unlike other references to source element or video sink, this reference is not released upon the object destruction (ie gst_object_unref is not called).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566699</commentid>
    <comment_count>1</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-28 08:20:00 -0800</bug_when>
    <thetext>Good catch indeed! I&apos;ll be happy to review the patch :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566730</commentid>
    <comment_count>2</comment_count>
      <attachid>129267</attachid>
    <who name="David Corvoysier">david.corvoysier</who>
    <bug_when>2012-02-28 08:47:11 -0800</bug_when>
    <thetext>Created attachment 129267
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566767</commentid>
    <comment_count>3</comment_count>
      <attachid>129267</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-28 09:10:11 -0800</bug_when>
    <thetext>Comment on attachment 129267
Proposed patch

Thanks, David! Do you need the commit-queue to land this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566796</commentid>
    <comment_count>4</comment_count>
      <attachid>129267</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-28 09:35:09 -0800</bug_when>
    <thetext>Comment on attachment 129267
Proposed patch

Attachment 129267 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11662224

New failing tests:
css3/filters/effect-invert-hw.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>566804</commentid>
    <comment_count>5</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-28 09:47:29 -0800</bug_when>
    <thetext>Looks like a good candidate for a RefPtr!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567441</commentid>
    <comment_count>6</comment_count>
    <who name="David Corvoysier">david.corvoysier</who>
    <bug_when>2012-02-28 23:55:49 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Looks like a good candidate for a RefPtr!

Not really, I think, as this is purely related to the specific gstreamer refcounting (it could be if a specific type of RfPtr was added for gst_objects, to explicitly call gst_object_unref upon object destruction).
What happens here is that the audio-sink is neither &quot;disposed&quot; nor &quot;finalized&quot; (in the gstreamer terminology), because its gstreamer refcount stays &gt; 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567442</commentid>
    <comment_count>7</comment_count>
    <who name="David Corvoysier">david.corvoysier</who>
    <bug_when>2012-02-28 23:58:20 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 129267 [details])
&gt; Attachment 129267 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/11662224
&gt; 
&gt; New failing tests:
&gt; css3/filters/effect-invert-hw.html

I don&apos;t see the relationship between the patch and this failing test: is Chrome even using gstreamer ? What am I supposed to do ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567490</commentid>
    <comment_count>8</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-02-29 01:11:36 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #4)
&gt; &gt; (From update of attachment 129267 [details] [details])
&gt; &gt; Attachment 129267 [details] [details] did not pass chromium-ews (chromium-xvfb):
&gt; &gt; Output: http://queues.webkit.org/results/11662224
&gt; &gt; 
&gt; &gt; New failing tests:
&gt; &gt; css3/filters/effect-invert-hw.html
&gt; 
&gt; I don&apos;t see the relationship between the patch and this failing test: is Chrome even using gstreamer ? What am I supposed to do ?

You can ignore this warning. Chromium indeed doesn&apos;t use the gstreamer backend.

(In reply to comment #6)
&gt; (In reply to comment #5)
&gt; &gt; Looks like a good candidate for a RefPtr!
&gt; 
&gt; Not really, I think, as this is purely related to the specific gstreamer refcounting (it could be if a specific type of RfPtr was added for gst_objects, to explicitly call gst_object_unref upon object destruction).
&gt; What happens here is that the audio-sink is neither &quot;disposed&quot; nor &quot;finalized&quot; (in the gstreamer terminology), because its gstreamer refcount stays &gt; 0.

Well Martin is right indeed. We have implemented exactly what you describe in GRefPtrGStreamer.cpp. So if you can update the patch it would be awesome :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567584</commentid>
    <comment_count>9</comment_count>
    <who name="David Corvoysier">david.corvoysier</who>
    <bug_when>2012-02-29 07:09:58 -0800</bug_when>
    <thetext>&gt; Well Martin is right indeed. We have implemented exactly what you describe in GRefPtrGStreamer.cpp. So if you can update the patch it would be awesome :)

You&apos;re right, sorry I missed that: I am mainly working on the qtwebkit22 branch where they have not been introduced yet, although GOwnPtr was already there ...

Anyway, I am still a bit puzzled by the way these RefPtr are used in MediaPlayerPrivateGStreamer. 

See for example how the handle on the audio-sink is retrieved in updateAudioSink:

Previously, using GOwnPtr:

    GOwnPtr&lt;GstElement&gt; element;

    g_object_get(m_playBin, &quot;audio-sink&quot;, &amp;element.outPtr(), NULL);
    gst_object_replace(reinterpret_cast&lt;GstObject**&gt;(&amp;m_webkitAudioSink),
                       reinterpret_cast&lt;GstObject*&gt;(element.get()));

Let&apos;s say that the audio sink element initially has a gst refcount of n.
- The call to g_object_get will increase it to n+1 (from what I see in playbin2),
- The call to gst_object_replace passing GOwnPtr.get() will increase the gst refcount to n+2
- the audio sink refcount will go back to n+1 when the element GOwnPtr goes out of scope

The consequence is that in the destructor, an explicit call to gst_object_unref on the audio sink is required (my patch).

Now, using GRefPtr:

    GRefPtr&lt;GstElement&gt; element;
    GstElement* sinkPtr = 0;

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

    gst_object_replace(reinterpret_cast&lt;GstObject**&gt;(&amp;m_webkitAudioSink),
                       reinterpret_cast&lt;GstObject*&gt;(element.get()));

Let&apos;s say that the audio sink element initially has a gst refcount of n.
- The call to g_object_get will increase it to n+1 (from what I see in playbin2),
- The transfer to the GstRefPtr (through adoptGRef) will further increase it to n+2,
- The call to gst_object_replace will further increase the gst refcount to n+3 (no refcount decrease as passing GRefPtr.get() is used here)
- When element loses visibility, the gst refcount will go back to n+2.

Now, when returning fom updateAudioSink, the m_webkitAudioSink member points to an element whose gst refcount has been increased to n+2, instead of n+1.

So, correct me if I am wrong, but the situation is even worse than before, and two gst_unref would now be required to actually finalize the audio-sink (the same applies to the webkit source element)...

If the code was purely gstreamer, it would look like:

    GstElement* sinkPtr = 0;

    g_object_get(m_playBin, &quot;audio-sink&quot;, &amp;sinkPtr, NULL);

    gst_object_replace(reinterpret_cast&lt;GstObject**&gt;(&amp;m_webkitAudioSink),
                       reinterpret_cast&lt;GstObject*&gt;(sinkPtr));

    gst_object_unref(sinkPtr);

Now, if we wanted to store the audio sink handle as a GRefPtr, I assume it would look like:

    GRefPtr&lt;GstElement&gt; m_webkitAudioSink;
...

    GstElement* sinkPtr = 0;

    g_object_get(m_playBin, &quot;audio-sink&quot;, &amp;sinkPtr, NULL);

    m_webkitAudioSink= adoptGRef(sinkPtr);

    gst_object_unref(sinkPtr);

Is it correct or did I get it all wrong ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567630</commentid>
    <comment_count>10</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-29 08:01:22 -0800</bug_when>
    <thetext>(In reply to comment #9)

&gt; - The transfer to the GstRefPtr (through adoptGRef) will further increase it to n+2,

When creating a GRefPtr with adoptGRef or a RefPtr with adopRef, the reference count does not increase. Indeed this is the purpose of adoptRef. When doing a naked assignment, the reference count will increase. For more information, check out this document: http://www.webkit.org/coding/RefPtr.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567642</commentid>
    <comment_count>11</comment_count>
    <who name="David Corvoysier">david.corvoysier</who>
    <bug_when>2012-02-29 08:35:28 -0800</bug_when>
    <thetext>OK, got it: thanks for the link. I had missed the different constructor used when calling adoptGRef (&quot;Adopting constructor&quot;).

How about that, then:

    GRefPtr&lt;GstElement&gt; m_webkitAudioSink;
...

    GstElement* sinkPtr = 0;

    g_object_get(m_playBin, &quot;audio-sink&quot;, &amp;sinkPtr, NULL);

    m_webkitAudioSink= adoptGRef(sinkPtr);

And that&apos;s it: no need for explicit call to gst_unref in the destructor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>567671</commentid>
    <comment_count>12</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-02-29 09:11:54 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; OK, got it: thanks for the link. I had missed the different constructor used when calling adoptGRef (&quot;Adopting constructor&quot;).
&gt; 
&gt; How about that, then:
&gt; 
&gt;     GRefPtr&lt;GstElement&gt; m_webkitAudioSink;
&gt; ...
&gt; 
&gt;     GstElement* sinkPtr = 0;
&gt; 
&gt;     g_object_get(m_playBin, &quot;audio-sink&quot;, &amp;sinkPtr, NULL);
&gt; 
&gt;     m_webkitAudioSink= adoptGRef(sinkPtr);
&gt; 
&gt; And that&apos;s it: no need for explicit call to gst_unref in the destructor.

Looks great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569396</commentid>
    <comment_count>13</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-02 00:56:02 -0800</bug_when>
    <thetext>Can you please update the patch David? It would be a good clean-up, the same approach can be used for the ::sourceChanged() method too :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569469</commentid>
    <comment_count>14</comment_count>
    <who name="David Corvoysier">david.corvoysier</who>
    <bug_when>2012-03-02 02:35:19 -0800</bug_when>
    <thetext>Yes, but since the patch against the trunk is now a bit different than the patch in my build environment, I need to set up a new desktop build environment to test against the trunk. It is taking me some time, especially with the current responsiveness of webkit.org ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571742</commentid>
    <comment_count>15</comment_count>
      <attachid>130357</attachid>
    <who name="David Corvoysier">david.corvoysier</who>
    <bug_when>2012-03-06 04:49:31 -0800</bug_when>
    <thetext>Created attachment 130357
New patch using GRefPtr&lt;GstElement&gt;

Bug fix: Used a GRefPtr to hold the reference to the audio sink instead of a GstElement*.
Code cleanup: Used the same pattern for webkit web source and removed explicit gst_unref in destructor.

Tested it on a typical video page, with GST_DEBUG=GST_REFCOUNTING:5, and verified both audio sink and webkit web source are properly released.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571744</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 04:52:55 -0800</bug_when>
    <thetext>Attachment 130357 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.h:28:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571750</commentid>
    <comment_count>17</comment_count>
      <attachid>130357</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-06 05:00:15 -0800</bug_when>
    <thetext>Comment on attachment 130357
New patch using GRefPtr&lt;GstElement&gt;

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

&gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:-33
&gt; -#include &quot;GRefPtrGStreamer.h&quot;

Why did you remove this include?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571752</commentid>
    <comment_count>18</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-06 05:01:25 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; (From update of attachment 130357 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=130357&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:-33
&gt; &gt; -#include &quot;GRefPtrGStreamer.h&quot;
&gt; 
&gt; Why did you remove this include?

Ignore this please :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571755</commentid>
    <comment_count>19</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-06 05:10:21 -0800</bug_when>
    <thetext>All good, would you mind fixing that little coding style error?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571772</commentid>
    <comment_count>20</comment_count>
    <who name="David Corvoysier">david.corvoysier</who>
    <bug_when>2012-03-06 05:41:39 -0800</bug_when>
    <thetext>Well, I think it is a false positive, as even the existing code triggers that error, and I don&apos;t see how I can obey both the include_order and include_system rules ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571778</commentid>
    <comment_count>21</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-06 05:47:13 -0800</bug_when>
    <thetext>Hum it seems to be an issue even without the patch. Here&apos;s a combination that makes the style checker happy here:


#if ENABLE(VIDEO) &amp;&amp; USE(GSTREAMER)

#include &quot;MediaPlayerPrivate.h&quot;

#include &quot;Timer.h&quot;

#include &lt;glib.h&gt;
#include &lt;gst/gst.h&gt;
#include &lt;wtf/Forward.h&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571780</commentid>
    <comment_count>22</comment_count>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-06 05:48:54 -0800</bug_when>
    <thetext>I mean:

#if ENABLE(VIDEO) &amp;&amp; USE(GSTREAMER)

#include &quot;GRefPtrGStreamer.h&quot;
#include &quot;MediaPlayerPrivate.h&quot;
#include &quot;Timer.h&quot;
#include &lt;glib.h&gt;
#include &lt;gst/gst.h&gt;
#include &lt;wtf/Forward.h&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571882</commentid>
    <comment_count>23</comment_count>
      <attachid>130390</attachid>
    <who name="David Corvoysier">david.corvoysier</who>
    <bug_when>2012-03-06 08:29:35 -0800</bug_when>
    <thetext>Created attachment 130390
New patch with coding style fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571890</commentid>
    <comment_count>24</comment_count>
      <attachid>130390</attachid>
    <who name="Philippe Normand">pnormand</who>
    <bug_when>2012-03-06 08:53:50 -0800</bug_when>
    <thetext>Comment on attachment 130390
New patch with coding style fix

Thank you David!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571946</commentid>
    <comment_count>25</comment_count>
      <attachid>130390</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 10:15:16 -0800</bug_when>
    <thetext>Comment on attachment 130390
New patch with coding style fix

Clearing flags on attachment: 130390

Committed r109933: &lt;http://trac.webkit.org/changeset/109933&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571947</commentid>
    <comment_count>26</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 10:15:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129267</attachid>
            <date>2012-02-28 08:47:11 -0800</date>
            <delta_ts>2012-03-06 04:49:31 -0800</delta_ts>
            <desc>Proposed patch</desc>
            <filename>79795.patch</filename>
            <type>text/plain</type>
            <size>689</size>
            <attacher name="David Corvoysier">david.corvoysier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3Bw
CShyZXZpc2lvbiAxMDkxMDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjcyLDYgKzI3MiwxMSBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBs
YXllCiAgICAgICAgIG1fdmlkZW9TaW5rQmluID0gMDsKICAgICB9CiAKKyAgICBpZiAobV93ZWJr
aXRBdWRpb1NpbmspIHsKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZihtX3dlYmtpdEF1ZGlvU2lu
ayk7CisgICAgICAgIG1fd2Via2l0QXVkaW9TaW5rID0gMDsKKyAgICB9CisKICAgICBpZiAobV9w
bGF5QmluKSB7CiAgICAgICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZShtX3BsYXlCaW4sIEdTVF9T
VEFURV9OVUxMKTsKICAgICAgICAgZ3N0X29iamVjdF91bnJlZihHU1RfT0JKRUNUKG1fcGxheUJp
bikpOwo=
</data>
<flag name="commit-queue"
          id="131917"
          type_id="3"
          status="-"
          setter="webkit.review.bot"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130357</attachid>
            <date>2012-03-06 04:49:31 -0800</date>
            <delta_ts>2012-03-06 08:29:35 -0800</delta_ts>
            <desc>New patch using GRefPtr&lt;GstElement&gt;</desc>
            <filename>79795.patch</filename>
            <type>text/plain</type>
            <size>5521</size>
            <attacher name="David Corvoysier">david.corvoysier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTA2ICBEYXZpZCBD
b3J2b3lzaWVyICA8ZGF2aWQuY29ydm95c2llckBvcmFuZ2UuY29tPgorCisgICAgICAgIFVucmVs
ZWFzZWQgZ3N0X29iamVjdF9yZWZlcmVuY2UgdG8gYXVkaW8gc2luayBpbiBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5Nzk1CisKKyAgICAgICAgQnVnIGZpeDogVXNlZCBhIEdSZWZQdHIgdG8gaG9sZCB0
aGUgcmVmZXJlbmNlIHRvIHRoZSBhdWRpbyBzaW5rIGluc3RlYWQgb2YgYSBHc3RFbGVtZW50Ki4K
KyAgICAgICAgQ29kZSBjbGVhbnVwOiBVc2VkIHRoZSBzYW1lIHBhdHRlcm4gZm9yIHdlYmtpdCB3
ZWIgc291cmNlIGFuZCByZW1vdmVkIGV4cGxpY2l0IGdzdF91bnJlZiBpbiBkZXN0cnVjdG9yLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcik6CisKIDIwMTItMDMtMDYgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBCdWlsZCBmaXggYWZ0ZXIgcjEwOTg3Ny4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAxMDk3NTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
LSNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxk
LmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgpAQCAtMjYyLDExICsyNjEsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6On5NZWRpYVBsYXllCiAgICAgICAgIG1fbWVkaWFMb2NhdGlvbnMgPSAwOwogICAgIH0KIAot
ICAgIGlmIChtX3NvdXJjZSkgewotICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKG1fc291cmNlKTsK
LSAgICAgICAgbV9zb3VyY2UgPSAwOwotICAgIH0KLQogICAgIGlmIChtX3ZpZGVvU2lua0Jpbikg
ewogICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKG1fdmlkZW9TaW5rQmluKTsKICAgICAgICAgbV92
aWRlb1NpbmtCaW4gPSAwOwpAQCAtOTU4LDkgKzk1Miw5IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6dG8KICAgICBHc3RGb3JtYXQgZm10ID0gR1NUX0ZPUk1BVF9CWVRF
UzsKICAgICBnaW50NjQgbGVuZ3RoID0gMDsKICNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAg
IGlmIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3NvdXJjZSwgZm10LCAmbGVuZ3RoKSkg
eworICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3NvdXJjZS5nZXQoKSwgZm10
LCAmbGVuZ3RoKSkgewogI2Vsc2UKLSAgICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24o
bV9zb3VyY2UsICZmbXQsICZsZW5ndGgpKSB7CisgICAgaWYgKGdzdF9lbGVtZW50X3F1ZXJ5X2R1
cmF0aW9uKG1fc291cmNlLmdldCgpLCAmZm10LCAmbGVuZ3RoKSkgewogI2VuZGlmCiAgICAgICAg
IExPR19WRVJCT1NFKE1lZGlhLCAidG90YWxCeXRlcyAlIiBHX0dJTlQ2NF9GT1JNQVQsIGxlbmd0
aCk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKTsKQEAgLTk2
OCw3ICs5NjIsNyBAQCB1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvCiAK
ICAgICAvLyBGYWxsIGJhY2sgdG8gcXVlcnlpbmcgdGhlIHNvdXJjZSBwYWRzIG1hbnVhbGx5Lgog
ICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Mzg3NDkKLSAgICBHc3RJdGVyYXRvciogaXRlciA9IGdzdF9lbGVtZW50X2l0ZXJhdGVfc3Jj
X3BhZHMobV9zb3VyY2UpOworICAgIEdzdEl0ZXJhdG9yKiBpdGVyID0gZ3N0X2VsZW1lbnRfaXRl
cmF0ZV9zcmNfcGFkcyhtX3NvdXJjZS5nZXQoKSk7CiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAg
ICAgd2hpbGUgKCFkb25lKSB7CiAjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKQEAgLTEwMzYsNyAr
MTAzMCw3IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXUKICAgICBH
c3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3Bvc2l0aW9uKEdTVF9GT1JNQVRfQllURVMp
OwogICAgIGdpbnQ2NCBwb3NpdGlvbiA9IDA7CiAKLSAgICBpZiAobV93ZWJraXRBdWRpb1Npbmsg
JiYgZ3N0X2VsZW1lbnRfcXVlcnkobV93ZWJraXRBdWRpb1NpbmssIHF1ZXJ5KSkKKyAgICBpZiAo
bV93ZWJraXRBdWRpb1NpbmsgJiYgZ3N0X2VsZW1lbnRfcXVlcnkobV93ZWJraXRBdWRpb1Npbmsu
Z2V0KCksIHF1ZXJ5KSkKICAgICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX3Bvc2l0aW9uKHF1ZXJ5LCAw
LCAmcG9zaXRpb24pOwogCiAgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKQEAgLTEwNjAsMzAg
KzEwNTQsMjMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZQogICAg
IGlmICghbV9wbGF5QmluKQogICAgICAgICByZXR1cm47CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1l
bnQ+IGVsZW1lbnQ7CiAgICAgR3N0RWxlbWVudCogc2lua1B0ciA9IDA7CiAKICAgICBnX29iamVj
dF9nZXQobV9wbGF5QmluLCAiYXVkaW8tc2luayIsICZzaW5rUHRyLCBOVUxMKTsKLSAgICBlbGVt
ZW50ID0gYWRvcHRHUmVmKHNpbmtQdHIpOworICAgIG1fd2Via2l0QXVkaW9TaW5rID0gYWRvcHRH
UmVmKHNpbmtQdHIpOwogCi0gICAgZ3N0X29iamVjdF9yZXBsYWNlKHJlaW50ZXJwcmV0X2Nhc3Q8
R3N0T2JqZWN0Kio+KCZtX3dlYmtpdEF1ZGlvU2luayksCi0gICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0T2JqZWN0Kj4oZWxlbWVudC5nZXQoKSkpOwogfQogCiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzb3VyY2VDaGFuZ2VkKCkKIHsKLSAgICBH
UmVmUHRyPEdzdEVsZW1lbnQ+IGVsZW1lbnQ7CiAgICAgR3N0RWxlbWVudCogc3JjUHRyID0gMDsK
IAogICAgIGdfb2JqZWN0X2dldChtX3BsYXlCaW4sICJzb3VyY2UiLCAmc3JjUHRyLCBOVUxMKTsK
LSAgICBlbGVtZW50ID0gYWRvcHRHUmVmKHNyY1B0cik7Ci0KLSAgICBnc3Rfb2JqZWN0X3JlcGxh
Y2UocmVpbnRlcnByZXRfY2FzdDxHc3RPYmplY3QqKj4oJm1fc291cmNlKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHc3RPYmplY3QqPihlbGVtZW50LmdldCgpKSk7
CisgICAgbV9zb3VyY2UgPSBhZG9wdEdSZWYoc3JjUHRyKTsKIAotICAgIGlmIChXRUJLSVRfSVNf
V0VCX1NSQyhlbGVtZW50LmdldCgpKSkKLSAgICAgICAgd2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5
ZXIoV0VCS0lUX1dFQl9TUkMoZWxlbWVudC5nZXQoKSksIG1fcGxheWVyKTsKKyAgICBpZiAoV0VC
S0lUX0lTX1dFQl9TUkMobV9zb3VyY2UuZ2V0KCkpKQorICAgICAgICB3ZWJLaXRXZWJTcmNTZXRN
ZWRpYVBsYXllcihXRUJLSVRfV0VCX1NSQyhtX3NvdXJjZS5nZXQoKSksIG1fcGxheWVyKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhbmNlbExvYWQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAkocmV2aXNpb24g
MTA5NzUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2ICsyNSw3
IEBACiAjaWYgRU5BQkxFKFZJREVPKSAmJiBVU0UoR1NUUkVBTUVSKQogCiAjaW5jbHVkZSA8d3Rm
L0ZvcndhcmQuaD4KKyNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiTWVk
aWFQbGF5ZXJQcml2YXRlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKIApAQCAtMTU0LDcgKzE1NSw3
IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lciA6IHB1YmwKICAgICAgICAgICAg
IEdzdEVsZW1lbnQqIG1fd2Via2l0VmlkZW9TaW5rOwogICAgICAgICAgICAgR3N0RWxlbWVudCog
bV92aWRlb1NpbmtCaW47CiAgICAgICAgICAgICBHc3RFbGVtZW50KiBtX2Zwc1Npbms7Ci0gICAg
ICAgICAgICBHc3RFbGVtZW50KiBtX3NvdXJjZTsKKyAgICAgICAgICAgIEdSZWZQdHI8R3N0RWxl
bWVudD4gbV9zb3VyY2U7CiAgICAgICAgICAgICBmbG9hdCBtX3NlZWtUaW1lOwogICAgICAgICAg
ICAgYm9vbCBtX2NoYW5naW5nUmF0ZTsKICAgICAgICAgICAgIGZsb2F0IG1fZW5kVGltZTsKQEAg
LTE4Nyw3ICsxODgsNyBAQCBjbGFzcyBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJs
CiAgICAgICAgICAgICBib29sIG1faGFzQXVkaW87CiAgICAgICAgICAgICBndWludCBtX2F1ZGlv
VGltZXJIYW5kbGVyOwogICAgICAgICAgICAgZ3VpbnQgbV92aWRlb1RpbWVySGFuZGxlcjsKLSAg
ICAgICAgICAgIEdzdEVsZW1lbnQqIG1fd2Via2l0QXVkaW9TaW5rOworICAgICAgICAgICAgR1Jl
ZlB0cjxHc3RFbGVtZW50PiBtX3dlYmtpdEF1ZGlvU2luazsKICAgICB9OwogfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>130390</attachid>
            <date>2012-03-06 08:29:35 -0800</date>
            <delta_ts>2012-03-06 10:15:16 -0800</delta_ts>
            <desc>New patch with coding style fix</desc>
            <filename>79795.patch</filename>
            <type>text/plain</type>
            <size>5719</size>
            <attacher name="David Corvoysier">david.corvoysier</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwOTg5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAzLTA2ICBEYXZpZCBD
b3J2b3lzaWVyICA8ZGF2aWQuY29ydm95c2llckBvcmFuZ2UuY29tPgorCisgICAgICAgIFVucmVs
ZWFzZWQgZ3N0X29iamVjdF9yZWZlcmVuY2UgdG8gYXVkaW8gc2luayBpbiBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTc5Nzk1CisKKyAgICAgICAgQnVnIGZpeDogVXNlZCBhIEdSZWZQdHIgdG8gaG9sZCB0
aGUgcmVmZXJlbmNlIHRvIHRoZSBhdWRpbyBzaW5rIGluc3RlYWQgb2YgYSBHc3RFbGVtZW50Ki4K
KyAgICAgICAgQ29kZSBjbGVhbnVwOiBVc2VkIHRoZSBzYW1lIHBhdHRlcm4gZm9yIHdlYmtpdCB3
ZWIgc291cmNlIGFuZCByZW1vdmVkIGV4cGxpY2l0IGdzdF91bnJlZiBpbiBkZXN0cnVjdG9yLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0
ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6On5NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJl
YW1lcik6CisKIDIwMTItMDMtMDYgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAg
ICAgICBCdWlsZCBmaXggYWZ0ZXIgcjEwOTg3Ny4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCShyZXZpc2lvbiAxMDk3NTIpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRl
R1N0cmVhbWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNyArMzAsNiBAQAogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRnJhbWUuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
LSNpbmNsdWRlICJHUmVmUHRyR1N0cmVhbWVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyR1dvcmxk
LmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyVmVyc2lvbmluZy5oIgogI2luY2x1ZGUgIkdyYXBoaWNz
Q29udGV4dC5oIgpAQCAtMjYyLDExICsyNjEsNiBAQCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFt
ZXI6On5NZWRpYVBsYXllCiAgICAgICAgIG1fbWVkaWFMb2NhdGlvbnMgPSAwOwogICAgIH0KIAot
ICAgIGlmIChtX3NvdXJjZSkgewotICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKG1fc291cmNlKTsK
LSAgICAgICAgbV9zb3VyY2UgPSAwOwotICAgIH0KLQogICAgIGlmIChtX3ZpZGVvU2lua0Jpbikg
ewogICAgICAgICBnc3Rfb2JqZWN0X3VucmVmKG1fdmlkZW9TaW5rQmluKTsKICAgICAgICAgbV92
aWRlb1NpbmtCaW4gPSAwOwpAQCAtOTU4LDkgKzk1Miw5IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVy
UHJpdmF0ZUdTdHJlYW1lcjo6dG8KICAgICBHc3RGb3JtYXQgZm10ID0gR1NUX0ZPUk1BVF9CWVRF
UzsKICAgICBnaW50NjQgbGVuZ3RoID0gMDsKICNpZmRlZiBHU1RfQVBJX1ZFUlNJT05fMQotICAg
IGlmIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3NvdXJjZSwgZm10LCAmbGVuZ3RoKSkg
eworICAgIGlmIChnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbihtX3NvdXJjZS5nZXQoKSwgZm10
LCAmbGVuZ3RoKSkgewogI2Vsc2UKLSAgICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24o
bV9zb3VyY2UsICZmbXQsICZsZW5ndGgpKSB7CisgICAgaWYgKGdzdF9lbGVtZW50X3F1ZXJ5X2R1
cmF0aW9uKG1fc291cmNlLmdldCgpLCAmZm10LCAmbGVuZ3RoKSkgewogI2VuZGlmCiAgICAgICAg
IExPR19WRVJCT1NFKE1lZGlhLCAidG90YWxCeXRlcyAlIiBHX0dJTlQ2NF9GT1JNQVQsIGxlbmd0
aCk7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obGVuZ3RoKTsKQEAgLTk2
OCw3ICs5NjIsNyBAQCB1bnNpZ25lZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnRvCiAK
ICAgICAvLyBGYWxsIGJhY2sgdG8gcXVlcnlpbmcgdGhlIHNvdXJjZSBwYWRzIG1hbnVhbGx5Lgog
ICAgIC8vIFNlZSBhbHNvIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Mzg3NDkKLSAgICBHc3RJdGVyYXRvciogaXRlciA9IGdzdF9lbGVtZW50X2l0ZXJhdGVfc3Jj
X3BhZHMobV9zb3VyY2UpOworICAgIEdzdEl0ZXJhdG9yKiBpdGVyID0gZ3N0X2VsZW1lbnRfaXRl
cmF0ZV9zcmNfcGFkcyhtX3NvdXJjZS5nZXQoKSk7CiAgICAgYm9vbCBkb25lID0gZmFsc2U7CiAg
ICAgd2hpbGUgKCFkb25lKSB7CiAjaWZkZWYgR1NUX0FQSV9WRVJTSU9OXzEKQEAgLTEwMzYsNyAr
MTAzMCw3IEBAIHVuc2lnbmVkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6YXUKICAgICBH
c3RRdWVyeSogcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3Bvc2l0aW9uKEdTVF9GT1JNQVRfQllURVMp
OwogICAgIGdpbnQ2NCBwb3NpdGlvbiA9IDA7CiAKLSAgICBpZiAobV93ZWJraXRBdWRpb1Npbmsg
JiYgZ3N0X2VsZW1lbnRfcXVlcnkobV93ZWJraXRBdWRpb1NpbmssIHF1ZXJ5KSkKKyAgICBpZiAo
bV93ZWJraXRBdWRpb1NpbmsgJiYgZ3N0X2VsZW1lbnRfcXVlcnkobV93ZWJraXRBdWRpb1Npbmsu
Z2V0KCksIHF1ZXJ5KSkKICAgICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX3Bvc2l0aW9uKHF1ZXJ5LCAw
LCAmcG9zaXRpb24pOwogCiAgICAgZ3N0X3F1ZXJ5X3VucmVmKHF1ZXJ5KTsKQEAgLTEwNjAsMzAg
KzEwNTQsMjMgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnVwZGF0ZQogICAg
IGlmICghbV9wbGF5QmluKQogICAgICAgICByZXR1cm47CiAKLSAgICBHUmVmUHRyPEdzdEVsZW1l
bnQ+IGVsZW1lbnQ7CiAgICAgR3N0RWxlbWVudCogc2lua1B0ciA9IDA7CiAKICAgICBnX29iamVj
dF9nZXQobV9wbGF5QmluLCAiYXVkaW8tc2luayIsICZzaW5rUHRyLCBOVUxMKTsKLSAgICBlbGVt
ZW50ID0gYWRvcHRHUmVmKHNpbmtQdHIpOworICAgIG1fd2Via2l0QXVkaW9TaW5rID0gYWRvcHRH
UmVmKHNpbmtQdHIpOwogCi0gICAgZ3N0X29iamVjdF9yZXBsYWNlKHJlaW50ZXJwcmV0X2Nhc3Q8
R3N0T2JqZWN0Kio+KCZtX3dlYmtpdEF1ZGlvU2luayksCi0gICAgICAgICAgICAgICAgICAgICAg
IHJlaW50ZXJwcmV0X2Nhc3Q8R3N0T2JqZWN0Kj4oZWxlbWVudC5nZXQoKSkpOwogfQogCiAKIHZv
aWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpzb3VyY2VDaGFuZ2VkKCkKIHsKLSAgICBH
UmVmUHRyPEdzdEVsZW1lbnQ+IGVsZW1lbnQ7CiAgICAgR3N0RWxlbWVudCogc3JjUHRyID0gMDsK
IAogICAgIGdfb2JqZWN0X2dldChtX3BsYXlCaW4sICJzb3VyY2UiLCAmc3JjUHRyLCBOVUxMKTsK
LSAgICBlbGVtZW50ID0gYWRvcHRHUmVmKHNyY1B0cik7Ci0KLSAgICBnc3Rfb2JqZWN0X3JlcGxh
Y2UocmVpbnRlcnByZXRfY2FzdDxHc3RPYmplY3QqKj4oJm1fc291cmNlKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxHc3RPYmplY3QqPihlbGVtZW50LmdldCgpKSk7
CisgICAgbV9zb3VyY2UgPSBhZG9wdEdSZWYoc3JjUHRyKTsKIAotICAgIGlmIChXRUJLSVRfSVNf
V0VCX1NSQyhlbGVtZW50LmdldCgpKSkKLSAgICAgICAgd2ViS2l0V2ViU3JjU2V0TWVkaWFQbGF5
ZXIoV0VCS0lUX1dFQl9TUkMoZWxlbWVudC5nZXQoKSksIG1fcGxheWVyKTsKKyAgICBpZiAoV0VC
S0lUX0lTX1dFQl9TUkMobV9zb3VyY2UuZ2V0KCkpKQorICAgICAgICB3ZWJLaXRXZWJTcmNTZXRN
ZWRpYVBsYXllcihXRUJLSVRfV0VCX1NSQyhtX3NvdXJjZS5nZXQoKSksIG1fcGxheWVyKTsKIH0K
IAogdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNhbmNlbExvYWQoKQpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAkocmV2aXNpb24g
MTA5NzUyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01l
ZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNCwxMiArMjQs
MTMgQEAKICNkZWZpbmUgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyX2gKICNpZiBFTkFCTEUo
VklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKLSNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2lu
Y2x1ZGUgIkdSZWZQdHJHU3RyZWFtZXIuaCIKICNpbmNsdWRlICJNZWRpYVBsYXllclByaXZhdGUu
aCIKICNpbmNsdWRlICJUaW1lci5oIgogCiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdz
dC9nc3QuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogCiB0eXBlZGVmIHN0cnVjdCBfV2Vi
S2l0VmlkZW9TaW5rIFdlYktpdFZpZGVvU2luazsKIHR5cGVkZWYgc3RydWN0IF9Hc3RCdWZmZXIg
R3N0QnVmZmVyOwpAQCAtMTU0LDcgKzE1NSw3IEBAIGNsYXNzIE1lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lciA6IHB1YmwKICAgICAgICAgICAgIEdzdEVsZW1lbnQqIG1fd2Via2l0VmlkZW9TaW5r
OwogICAgICAgICAgICAgR3N0RWxlbWVudCogbV92aWRlb1NpbmtCaW47CiAgICAgICAgICAgICBH
c3RFbGVtZW50KiBtX2Zwc1Npbms7Ci0gICAgICAgICAgICBHc3RFbGVtZW50KiBtX3NvdXJjZTsK
KyAgICAgICAgICAgIEdSZWZQdHI8R3N0RWxlbWVudD4gbV9zb3VyY2U7CiAgICAgICAgICAgICBm
bG9hdCBtX3NlZWtUaW1lOwogICAgICAgICAgICAgYm9vbCBtX2NoYW5naW5nUmF0ZTsKICAgICAg
ICAgICAgIGZsb2F0IG1fZW5kVGltZTsKQEAgLTE4Nyw3ICsxODgsNyBAQCBjbGFzcyBNZWRpYVBs
YXllclByaXZhdGVHU3RyZWFtZXIgOiBwdWJsCiAgICAgICAgICAgICBib29sIG1faGFzQXVkaW87
CiAgICAgICAgICAgICBndWludCBtX2F1ZGlvVGltZXJIYW5kbGVyOwogICAgICAgICAgICAgZ3Vp
bnQgbV92aWRlb1RpbWVySGFuZGxlcjsKLSAgICAgICAgICAgIEdzdEVsZW1lbnQqIG1fd2Via2l0
QXVkaW9TaW5rOworICAgICAgICAgICAgR1JlZlB0cjxHc3RFbGVtZW50PiBtX3dlYmtpdEF1ZGlv
U2luazsKICAgICB9OwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>