<?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>115033</bug_id>
          
          <creation_ts>2013-04-23 06:32:20 -0700</creation_ts>
          <short_desc>Add move semantics to RefPtr</short_desc>
          <delta_ts>2013-04-26 07:55:37 -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>Web Template Framework</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="Mikhail Pozdnyakov">mikhail.pozdnyakov</reporter>
          <assigned_to name="Mikhail Pozdnyakov">mikhail.pozdnyakov</assigned_to>
          <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>buildbot</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>879815</commentid>
    <comment_count>0</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-23 06:32:20 -0700</bug_when>
    <thetext>SSIA. That would allow us to obviate unnecessary reffing/ureffing when RefPtr is created or assigned from rvalue references.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879835</commentid>
    <comment_count>1</comment_count>
      <attachid>199233</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-23 07:33:46 -0700</bug_when>
    <thetext>Created attachment 199233
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879836</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-23 07:35:49 -0700</bug_when>
    <thetext>Attachment 199233 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/RefPtr.h&apos;]&quot; exit_code: 1
Source/WTF/wtf/RefPtr.h:84:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 1 in 2 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>879837</commentid>
    <comment_count>3</comment_count>
      <attachid>199233</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-04-23 07:44:02 -0700</bug_when>
    <thetext>Comment on attachment 199233
patch

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

This is great, but I&apos;d appreciate if you could upload a new patch so we can let the EWS bots chew at it - it&apos;s a pretty fundamental change and it could break the build in weird wais.

&gt; Source/WTF/wtf/RefPtr.h:47
&gt; +        ALWAYS_INLINE RefPtr(RefPtr&amp;&amp; o) : m_ptr(o.get()) { o.m_ptr = 0; }

I think this would read better as 

RefPtr(RefPtr&amp;&amp; o) : m_ptr(o.release().leakRef()) { }

&gt; Source/WTF/wtf/RefPtr.h:48
&gt; +        template&lt;typename U&gt; RefPtr(RefPtr&lt;U&gt;&amp;&amp; o) : m_ptr(o.get()) { o.m_ptr = 0; }

Same thing here.

&gt; Source/WTF/wtf/RefPtr.h:163
&gt; +        if (m_ptr != o.get()) {
&gt; +            derefIfNotNull(m_ptr);
&gt; +            m_ptr = o.get();
&gt; +            o.m_ptr = 0;
&gt; +        }
&gt; +        return *this;

I think this could just be m_ptr = o.release();

&gt; Source/WTF/wtf/RefPtr.h:172
&gt; +        if (m_ptr != o.get()) {
&gt; +            derefIfNotNull(m_ptr);
&gt; +            m_ptr = o.get();
&gt; +            o.m_ptr = 0;
&gt; +        }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879845</commentid>
    <comment_count>4</comment_count>
      <attachid>199236</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-23 07:52:44 -0700</bug_when>
    <thetext>Created attachment 199236
patch v2

Updated due to comments from Anders. Thanks Anders!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879860</commentid>
    <comment_count>5</comment_count>
      <attachid>199236</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-04-23 08:02:31 -0700</bug_when>
    <thetext>Comment on attachment 199236
patch v2

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

&gt; Source/WTF/wtf/RefPtr.h:85
&gt; +        RefPtr&amp; operator=(RefPtr&amp;&amp; o) { m_ptr = o.release(); }
&gt; +        template&lt;typename U&gt; RefPtr&amp; operator=(RefPtr&lt;U&gt;&amp;&amp; o) { m_ptr = o.release(); }

These will cause a memory leak now, and return *this is gone. Let&apos;s change them back into what you had before; something like:

if (m_ptr != o.m_ptr)) {
    derefIfNotNull(m_ptr);
    m_ptr = o.release().leakRef();
}
return *this;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879867</commentid>
    <comment_count>6</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-23 08:19:04 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 199236 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199236&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/RefPtr.h:85
&gt; &gt; +        RefPtr&amp; operator=(RefPtr&amp;&amp; o) { m_ptr = o.release(); }
&gt; &gt; +        template&lt;typename U&gt; RefPtr&amp; operator=(RefPtr&lt;U&gt;&amp;&amp; o) { m_ptr = o.release(); }
&gt; 
&gt; These will cause a memory leak now, and return *this is gone.
omg! that&apos;s my absent-mindedness :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879872</commentid>
    <comment_count>7</comment_count>
      <attachid>199244</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-23 08:28:40 -0700</bug_when>
    <thetext>Created attachment 199244
patch v3

fixed assignment operators :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879873</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-23 08:29:38 -0700</bug_when>
    <thetext>Attachment 199244 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/RefPtr.h&apos;]&quot; exit_code: 1
Source/WTF/wtf/RefPtr.h:86:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 1 in 2 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>879965</commentid>
    <comment_count>9</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-04-23 10:30:56 -0700</bug_when>
    <thetext>&gt; That would allow us to obviate unnecessary reffing/ureffing when RefPtr is created or assigned from rvalue references.

Do we have examples of that in WebKit now? We are supposed to use PassRefPtr for poor man&apos;s move semantics.

To be clear, I certainly don&apos;t object to this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>879981</commentid>
    <comment_count>10</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-23 11:10:22 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; &gt; That would allow us to obviate unnecessary reffing/ureffing when RefPtr is created or assigned from rvalue references.
&gt; 
&gt; Do we have examples of that in WebKit now? We are supposed to use PassRefPtr for poor man&apos;s move semantics.

There is no explicit use of rvalue reference, but clang is smart enough to use it in some cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880020</commentid>
    <comment_count>11</comment_count>
      <attachid>199244</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-23 11:19:09 -0700</bug_when>
    <thetext>Comment on attachment 199244
patch v3

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

&gt; Source/WTF/wtf/RefPtr.h:160
&gt; +        if (m_ptr != o.get()) {
&gt; +            derefIfNotNull(m_ptr);
&gt; +            m_ptr = o.release().leakRef();
&gt; +        }
&gt; +        return *this;

I don&apos;t understand why you do this.

If you have
    RefPtr a = [foobar];
    RefPtr b = a;
    a = std::move(b);

&quot;b&quot; is unchanged, and the refcount is +2. This is counter-intuitive for move semantic.

&gt; Source/WTF/wtf/RefPtr.h:169
&gt; +        if (m_ptr != o.get()) {
&gt; +            derefIfNotNull(m_ptr);
&gt; +            m_ptr = o.release().leakRef();
&gt; +        }
&gt; +        return *this;

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880431</commentid>
    <comment_count>12</comment_count>
      <attachid>199413</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-24 04:38:19 -0700</bug_when>
    <thetext>Created attachment 199413
patch v4

Addresses Benjamin&apos;s concern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>880433</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-24 04:40:28 -0700</bug_when>
    <thetext>Attachment 199413 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/RefPtr.h&apos;]&quot; exit_code: 1
Source/WTF/wtf/RefPtr.h:86:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 1 in 2 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>880806</commentid>
    <comment_count>14</comment_count>
      <attachid>199413</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-04-24 14:42:05 -0700</bug_when>
    <thetext>Comment on attachment 199413
patch v4

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

&gt; Source/WTF/wtf/RefPtr.h:159
&gt; +        T* ptr = m_ptr;
&gt; +        m_ptr = o.release().leakRef();
&gt; +        derefIfNotNull(ptr);
&gt; +        return *this;

With this, what if I do this?

RefPtr a = [...];
a = std::move(a);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881139</commentid>
    <comment_count>15</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-25 01:26:23 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; (From update of attachment 199413 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199413&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/RefPtr.h:159
&gt; &gt; +        T* ptr = m_ptr;
&gt; &gt; +        m_ptr = o.release().leakRef();
&gt; &gt; +        derefIfNotNull(ptr);
&gt; &gt; +        return *this;
&gt; 
&gt; With this, what if I do this?
&gt; 
&gt; RefPtr a = [...];
&gt; a = std::move(a);

mm, wouldn&apos;t it mean that we do not care about &apos;a&apos; anymore? so that looks like caller&apos;s fault.
btw, in RetainPtr we have exactly same implementation:
    template&lt;typename T&gt; inline RetainPtr&lt;T&gt;&amp; RetainPtr&lt;T&gt;::operator=(RetainPtr&lt;T&gt;&amp;&amp; o)
    {
        adoptCF(o.leakRef());
        return *this;
    }

and

    template&lt;typename T&gt; inline void RetainPtr&lt;T&gt;::adoptCF(PtrType optr)
    {
        PtrType ptr = m_ptr;
        m_ptr = optr;
        if (ptr)
            CFRelease(ptr);
    }</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881262</commentid>
    <comment_count>16</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-04-25 08:18:08 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 199244 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199244&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/RefPtr.h:160
&gt; &gt; +        if (m_ptr != o.get()) {
&gt; &gt; +            derefIfNotNull(m_ptr);
&gt; &gt; +            m_ptr = o.release().leakRef();
&gt; &gt; +        }
&gt; &gt; +        return *this;
&gt; 
&gt; I don&apos;t understand why you do this.

My mistake, I think this check should just be:

if (this != &amp;o) {
...
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881273</commentid>
    <comment_count>17</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-25 08:42:15 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; (From update of attachment 199413 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=199413&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WTF/wtf/RefPtr.h:159
&gt; &gt; &gt; +        T* ptr = m_ptr;
&gt; &gt; &gt; +        m_ptr = o.release().leakRef();
&gt; &gt; &gt; +        derefIfNotNull(ptr);
&gt; &gt; &gt; +        return *this;
&gt; &gt; 
&gt; &gt; With this, what if I do this?
&gt; &gt; 
&gt; &gt; RefPtr a = [...];
&gt; &gt; a = std::move(a);
&gt; 
&gt; mm, wouldn&apos;t it mean that we do not care about &apos;a&apos; anymore? so that looks like caller&apos;s fault.
&gt; btw, in RetainPtr we have exactly same implementation:
&gt;     template&lt;typename T&gt; inline RetainPtr&lt;T&gt;&amp; RetainPtr&lt;T&gt;::operator=(RetainPtr&lt;T&gt;&amp;&amp; o)
&gt;     {
&gt;         adoptCF(o.leakRef());
&gt;         return *this;
&gt;     }
&gt; 
&gt; and
&gt; 
&gt;     template&lt;typename T&gt; inline void RetainPtr&lt;T&gt;::adoptCF(PtrType optr)
&gt;     {
&gt;         PtrType ptr = m_ptr;
&gt;         m_ptr = optr;
&gt;         if (ptr)
&gt;             CFRelease(ptr);
&gt;     }
yeah, with RetainPtr it&apos;s different as it\s releasing m_ptr which is 0 after leakPtr() call.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881483</commentid>
    <comment_count>18</comment_count>
      <attachid>199733</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-25 12:11:26 -0700</bug_when>
    <thetext>Created attachment 199733
patch v5

Fixed &apos;=&apos; operator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881487</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-25 12:12:26 -0700</bug_when>
    <thetext>Attachment 199733 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/RefPtr.h&apos;]&quot; exit_code: 1
Source/WTF/wtf/RefPtr.h:86:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 1 in 2 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>881530</commentid>
    <comment_count>20</comment_count>
      <attachid>199733</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-25 13:16:04 -0700</bug_when>
    <thetext>Comment on attachment 199733
patch v5

Attachment 199733 did not pass mac-wk2-ews (mac-wk2):
Output: http://webkit-queues.appspot.com/results/144200</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881531</commentid>
    <comment_count>21</comment_count>
      <attachid>199733</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-25 13:24:26 -0700</bug_when>
    <thetext>Comment on attachment 199733
patch v5

Attachment 199733 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/175534</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881555</commentid>
    <comment_count>22</comment_count>
      <attachid>199733</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-04-25 14:22:03 -0700</bug_when>
    <thetext>Comment on attachment 199733
patch v5

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

&gt; Source/WTF/wtf/RefPtr.h:168
&gt; +        if (this != &amp;o) {
&gt; +            derefIfNotNull(m_ptr);
&gt; +            m_ptr = o.release().leakRef();
&gt; +        }

It’s difficult to get this right; often this and &amp;o are not objects of the same type, so we can’t compare them.

I suggest we instead consider the canonical operator= implementation:

    RefPtr&lt;T&gt; ptr = o;
    swap(ptr);
    return *this;

We could use this for both operator= overloads. As long as it compiles to efficient-enough code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881557</commentid>
    <comment_count>23</comment_count>
      <attachid>199733</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-04-25 14:23:56 -0700</bug_when>
    <thetext>Comment on attachment 199733
patch v5

Attachment 199733 did not pass mac-ews (mac):
Output: http://webkit-queues.appspot.com/results/19238</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881559</commentid>
    <comment_count>24</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-04-25 14:27:34 -0700</bug_when>
    <thetext>(In reply to comment #22)
.
&gt; 
&gt; I suggest we instead consider the canonical operator= implementation:
&gt; 
&gt;     RefPtr&lt;T&gt; ptr = o;
&gt;     swap(ptr);
&gt;     return *this;

I like that. The first row should be

RefPtr&lt;T&gt; ptr = std::move(o);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881767</commentid>
    <comment_count>25</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-26 01:54:10 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; (In reply to comment #22)
&gt; .
&gt; &gt; 
&gt; &gt; I suggest we instead consider the canonical operator= implementation:
&gt; &gt; 
&gt; &gt;     RefPtr&lt;T&gt; ptr = o;
&gt; &gt;     swap(ptr);
&gt; &gt;     return *this;
&gt; 
&gt; I like that. The first row should be
&gt; 
&gt; RefPtr&lt;T&gt; ptr = std::move(o);

That&apos;s great! but how about just
        
        RefPtr&lt;T&gt;(std::move(o)).swap(*this);
        return *this;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881772</commentid>
    <comment_count>26</comment_count>
      <attachid>199804</attachid>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-26 02:09:44 -0700</bug_when>
    <thetext>Created attachment 199804
patch v6

Canonical &apos;=&apos; operator implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881773</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-04-26 02:12:14 -0700</bug_when>
    <thetext>Attachment 199804 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WTF/ChangeLog&apos;, u&apos;Source/WTF/wtf/RefPtr.h&apos;]&quot; exit_code: 1
Source/WTF/wtf/RefPtr.h:87:  Missing spaces around &amp;&amp;  [whitespace/operators] [3]
Total errors found: 1 in 2 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>881887</commentid>
    <comment_count>28</comment_count>
      <attachid>199804</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-04-26 07:36:27 -0700</bug_when>
    <thetext>Comment on attachment 199804
patch v6

(In reply to comment #25)
&gt; That&apos;s great! but how about just
&gt; 
&gt;         RefPtr&lt;T&gt;(std::move(o)).swap(*this);
&gt;         return *this;

I think it&apos;s easier to read with an explicit temporary. Please make that change, r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>881897</commentid>
    <comment_count>29</comment_count>
    <who name="Mikhail Pozdnyakov">mikhail.pozdnyakov</who>
    <bug_when>2013-04-26 07:55:37 -0700</bug_when>
    <thetext>Committed r149184: &lt;http://trac.webkit.org/changeset/149184&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199233</attachid>
            <date>2013-04-23 07:33:46 -0700</date>
            <delta_ts>2013-04-23 07:52:44 -0700</delta_ts>
            <desc>patch</desc>
            <filename>bug115033</filename>
            <type>text/plain</type>
            <size>2990</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGNhMTdlNjc1ZmU4YmM5OTg2Y2E5NmE5MWYwMjFhZTI0OGZhZDFmYWQKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEFwciAyMyAxNjo1MTo0NCAyMDEzICswMzAwCgogICAgYnVnMTE1MDMzCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwOTk5
ZWNmLi5kNjAxMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA0LTIzICBNaWtoYWlsIFBv
emRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIEFkZCBt
b3ZlIHNlbWFudGljcyB0byBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBtb3ZlIGNvbnN0cnVjdG9ycyBhbmQgbW92ZSBhc3NpZ25tZW50
IG9wZXJhdG9ycyB0byBSZWZQdHIgd2hlbgorICAgICAgICBDT01QSUxFUl9TVVBQT1JUUyhDWFhf
UlZBTFVFX1JFRkVSRU5DRVMpLgorICAgICAgICBUaGlzIG9idmlhdGVzIHVubmVjZXNzYXJ5IHJl
ZmZpbmcvdXJlZmZpbmcgd2hlbiBSZWZQdHIgaXMgY3JlYXRlZAorICAgICAgICBvciBhc3NpZ25l
ZCBmcm9tIHJ2YWx1ZSByZWZlcmVuY2VzLgorCisgICAgICAgICogd3RmL1JlZlB0ci5oOgorICAg
ICAgICAoUmVmUHRyKToKKyAgICAgICAgKFdURjo6UmVmUHRyOjpSZWZQdHIpOgorICAgICAgICAo
V1RGOjpSZWZQdHI6Om9wZXJhdG9yPSk6CisKIDIwMTMtMDQtMjEgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcHJvdmUgU3RyaW5nSW1wbCBjb2Rl
IGRlbnNpdHkgZm9yIG9sZGVyIEFSTSBoYXJkd2FyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCAzMjJjYmQ2Li5jZWNj
NjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9SZWZQdHIuaApAQCAtNDMsNiArNDMsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IEFMV0FZU19JTkxJTkUgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykgOiBtX3B0cihvLm1fcHRyKSB7
IHJlZklmTm90TnVsbChtX3B0cik7IH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVm
UHRyKGNvbnN0IFJlZlB0cjxVPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90TnVsbCht
X3B0cik7IH0KIAorI2lmIENPTVBJTEVSX1NVUFBPUlRTKENYWF9SVkFMVUVfUkVGRVJFTkNFUykK
KyAgICAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoUmVmUHRyJiYgbykgOiBtX3B0cihvLmdldCgp
KSB7IG8ubV9wdHIgPSAwOyB9CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0cihS
ZWZQdHI8VT4mJiBvKSA6IG1fcHRyKG8uZ2V0KCkpIHsgby5tX3B0ciA9IDA7IH0KKyNlbmRpZgor
CiAgICAgICAgIC8vIFNlZSBjb21tZW50cyBpbiBQYXNzUmVmUHRyLmggZm9yIGFuIGV4cGxhbmF0
aW9uIG9mIHdoeSB0aGlzIHRha2VzIGEgY29uc3QgcmVmZXJlbmNlLgogICAgICAgICB0ZW1wbGF0
ZTx0eXBlbmFtZSBVPiBSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYpOwogCkBAIC03NSw2ICs4
MCwxMSBAQCBuYW1lc3BhY2UgV1RGIHsKICNpZiAhQ09NUElMRVJfU1VQUE9SVFMoQ1hYX05VTExQ
VFIpCiAgICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9KHN0ZDo6bnVsbHB0cl90KSB7IGNsZWFyKCk7
IHJldHVybiAqdGhpczsgfQogI2VuZGlmCisjaWYgQ09NUElMRVJfU1VQUE9SVFMoQ1hYX1JWQUxV
RV9SRUZFUkVOQ0VTKQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShSZWZQdHImJik7CisgICAg
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0cjxVPiYmKTsK
KyNlbmRpZgorCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9
KGNvbnN0IFJlZlB0cjxVPiYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIm
IG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+Jik7CiAKQEAgLTE0Miw3ICsxNTIsMjcgQEAg
bmFtZXNwYWNlIFdURiB7CiAgICAgICAgIGRlcmVmSWZOb3ROdWxsKHB0cik7CiAgICAgICAgIHJl
dHVybiAqdGhpczsKICAgICB9CisjaWYgQ09NUElMRVJfU1VQUE9SVFMoQ1hYX1JWQUxVRV9SRUZF
UkVOQ0VTKQorICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0
cjxUPjo6b3BlcmF0b3I9KFJlZlB0cjxUPiYmIG8pCisgICAgeworICAgICAgICBpZiAobV9wdHIg
IT0gby5nZXQoKSkgeworICAgICAgICAgICAgZGVyZWZJZk5vdE51bGwobV9wdHIpOworICAgICAg
ICAgICAgbV9wdHIgPSBvLmdldCgpOworICAgICAgICAgICAgby5tX3B0ciA9IDA7CisgICAgICAg
IH0KKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KIAorICAgIHRlbXBsYXRlPHR5cGVuYW1l
IFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+IGlubGluZSBSZWZQdHI8VD4mIFJlZlB0cjxUPjo6b3Bl
cmF0b3I9KFJlZlB0cjxVPiYmIG8pCisgICAgeworICAgICAgICBpZiAobV9wdHIgIT0gby5nZXQo
KSkgeworICAgICAgICAgICAgZGVyZWZJZk5vdE51bGwobV9wdHIpOworICAgICAgICAgICAgbV9w
dHIgPSBvLmdldCgpOworICAgICAgICAgICAgby5tX3B0ciA9IDA7CisgICAgICAgIH0KKyAgICAg
ICAgcmV0dXJuICp0aGlzOworICAgIH0KKyNlbmRpZgogICAgIHRlbXBsYXRlPGNsYXNzIFQ+IGlu
bGluZSB2b2lkIFJlZlB0cjxUPjo6c3dhcChSZWZQdHI8VD4mIG8pCiAgICAgewogICAgICAgICBz
dGQ6OnN3YXAobV9wdHIsIG8ubV9wdHIpOwo=
</data>
<flag name="review"
          id="220880"
          type_id="1"
          status="-"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199236</attachid>
            <date>2013-04-23 07:52:44 -0700</date>
            <delta_ts>2013-04-23 08:28:40 -0700</delta_ts>
            <desc>patch v2</desc>
            <filename>bug115033_v2</filename>
            <type>text/plain</type>
            <size>2256</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGU4NDFkOGZkYWJmNjE4YTY1YzYzNGVmYzlhNTMyODg5YzNkYzgwNjQKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEFwciAyMyAxNjo1MTo0NCAyMDEzICswMzAwCgogICAgYnVnMTE1MDMzCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwOTk5
ZWNmLi5kNjAxMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA0LTIzICBNaWtoYWlsIFBv
emRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIEFkZCBt
b3ZlIHNlbWFudGljcyB0byBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBtb3ZlIGNvbnN0cnVjdG9ycyBhbmQgbW92ZSBhc3NpZ25tZW50
IG9wZXJhdG9ycyB0byBSZWZQdHIgd2hlbgorICAgICAgICBDT01QSUxFUl9TVVBQT1JUUyhDWFhf
UlZBTFVFX1JFRkVSRU5DRVMpLgorICAgICAgICBUaGlzIG9idmlhdGVzIHVubmVjZXNzYXJ5IHJl
ZmZpbmcvdXJlZmZpbmcgd2hlbiBSZWZQdHIgaXMgY3JlYXRlZAorICAgICAgICBvciBhc3NpZ25l
ZCBmcm9tIHJ2YWx1ZSByZWZlcmVuY2VzLgorCisgICAgICAgICogd3RmL1JlZlB0ci5oOgorICAg
ICAgICAoUmVmUHRyKToKKyAgICAgICAgKFdURjo6UmVmUHRyOjpSZWZQdHIpOgorICAgICAgICAo
V1RGOjpSZWZQdHI6Om9wZXJhdG9yPSk6CisKIDIwMTMtMDQtMjEgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcHJvdmUgU3RyaW5nSW1wbCBjb2Rl
IGRlbnNpdHkgZm9yIG9sZGVyIEFSTSBoYXJkd2FyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCAzMjJjYmQ2Li5hMTBj
MWY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9SZWZQdHIuaApAQCAtNDMsNiArNDMsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IEFMV0FZU19JTkxJTkUgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykgOiBtX3B0cihvLm1fcHRyKSB7
IHJlZklmTm90TnVsbChtX3B0cik7IH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVm
UHRyKGNvbnN0IFJlZlB0cjxVPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90TnVsbCht
X3B0cik7IH0KIAorI2lmIENPTVBJTEVSX1NVUFBPUlRTKENYWF9SVkFMVUVfUkVGRVJFTkNFUykK
KyAgICAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoUmVmUHRyJiYgbykgOiBtX3B0cihvLnJlbGVh
c2UoKS5sZWFrUmVmKCkpIHsgfQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIo
UmVmUHRyPFU+JiYgbykgOiBtX3B0cihvLnJlbGVhc2UoKS5sZWFrUmVmKCkpIHsgfQorI2VuZGlm
CisKICAgICAgICAgLy8gU2VlIGNvbW1lbnRzIGluIFBhc3NSZWZQdHIuaCBmb3IgYW4gZXhwbGFu
YXRpb24gb2Ygd2h5IHRoaXMgdGFrZXMgYSBjb25zdCByZWZlcmVuY2UuCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IFJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+Jik7CiAKQEAgLTc1LDYg
KzgwLDExIEBAIG5hbWVzcGFjZSBXVEYgewogI2lmICFDT01QSUxFUl9TVVBQT1JUUyhDWFhfTlVM
TFBUUikKICAgICAgICAgUmVmUHRyJiBvcGVyYXRvcj0oc3RkOjpudWxscHRyX3QpIHsgY2xlYXIo
KTsgcmV0dXJuICp0aGlzOyB9CiAjZW5kaWYKKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhfUlZB
TFVFX1JFRkVSRU5DRVMpCisgICAgICAgIFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0ciYmIG8pIHsg
bV9wdHIgPSBvLnJlbGVhc2UoKTsgfQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQ
dHImIG9wZXJhdG9yPShSZWZQdHI8VT4mJiBvKSB7IG1fcHRyID0gby5yZWxlYXNlKCk7IH0KKyNl
bmRpZgorCiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNv
bnN0IFJlZlB0cjxVPiYpOwogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9w
ZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+Jik7CiAK
</data>
<flag name="review"
          id="220882"
          type_id="1"
          status="-"
          setter="andersca"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199244</attachid>
            <date>2013-04-23 08:28:40 -0700</date>
            <delta_ts>2013-04-24 04:38:19 -0700</delta_ts>
            <desc>patch v3</desc>
            <filename>bug115033_v3</filename>
            <type>text/plain</type>
            <size>2970</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDI0OTE1ZDFjYjYwNzdhMzdlMTVkOGE5ODM3ZmMwZjZhYWQ5OTVkYzIKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEFwciAyMyAxNjo1MTo0NCAyMDEzICswMzAwCgogICAgYnVnMTE1MDMzCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwOTk5
ZWNmLi5kNjAxMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA0LTIzICBNaWtoYWlsIFBv
emRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIEFkZCBt
b3ZlIHNlbWFudGljcyB0byBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBtb3ZlIGNvbnN0cnVjdG9ycyBhbmQgbW92ZSBhc3NpZ25tZW50
IG9wZXJhdG9ycyB0byBSZWZQdHIgd2hlbgorICAgICAgICBDT01QSUxFUl9TVVBQT1JUUyhDWFhf
UlZBTFVFX1JFRkVSRU5DRVMpLgorICAgICAgICBUaGlzIG9idmlhdGVzIHVubmVjZXNzYXJ5IHJl
ZmZpbmcvdXJlZmZpbmcgd2hlbiBSZWZQdHIgaXMgY3JlYXRlZAorICAgICAgICBvciBhc3NpZ25l
ZCBmcm9tIHJ2YWx1ZSByZWZlcmVuY2VzLgorCisgICAgICAgICogd3RmL1JlZlB0ci5oOgorICAg
ICAgICAoUmVmUHRyKToKKyAgICAgICAgKFdURjo6UmVmUHRyOjpSZWZQdHIpOgorICAgICAgICAo
V1RGOjpSZWZQdHI6Om9wZXJhdG9yPSk6CisKIDIwMTMtMDQtMjEgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcHJvdmUgU3RyaW5nSW1wbCBjb2Rl
IGRlbnNpdHkgZm9yIG9sZGVyIEFSTSBoYXJkd2FyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCAzMjJjYmQ2Li40M2I0
YzNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9SZWZQdHIuaApAQCAtNDMsNiArNDMsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IEFMV0FZU19JTkxJTkUgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykgOiBtX3B0cihvLm1fcHRyKSB7
IHJlZklmTm90TnVsbChtX3B0cik7IH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVm
UHRyKGNvbnN0IFJlZlB0cjxVPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90TnVsbCht
X3B0cik7IH0KIAorI2lmIENPTVBJTEVSX1NVUFBPUlRTKENYWF9SVkFMVUVfUkVGRVJFTkNFUykK
KyAgICAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoUmVmUHRyJiYgbykgOiBtX3B0cihvLnJlbGVh
c2UoKS5sZWFrUmVmKCkpIHsgfQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIo
UmVmUHRyPFU+JiYgbykgOiBtX3B0cihvLnJlbGVhc2UoKS5sZWFrUmVmKCkpIHsgfQorI2VuZGlm
CisKICAgICAgICAgLy8gU2VlIGNvbW1lbnRzIGluIFBhc3NSZWZQdHIuaCBmb3IgYW4gZXhwbGFu
YXRpb24gb2Ygd2h5IHRoaXMgdGFrZXMgYSBjb25zdCByZWZlcmVuY2UuCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IFJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+Jik7CiAKQEAgLTc3LDcg
KzgyLDEwIEBAIG5hbWVzcGFjZSBXVEYgewogI2VuZGlmCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxVPiYpOwogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+Jik7
Ci0KKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhfUlZBTFVFX1JFRkVSRU5DRVMpCisgICAgICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0ciYmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gUmVmUHRyJiBvcGVyYXRvcj0oUmVmUHRyPFU+JiYpOworI2VuZGlmCiAgICAgICAgIHZvaWQg
c3dhcChSZWZQdHImKTsKIAogICAgICAgICBzdGF0aWMgVCogaGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oLTEpOyB9CkBAIC0xNDIsNyArMTUwLDI1
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBkZXJlZklmTm90TnVsbChwdHIpOwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQorI2lmIENPTVBJTEVSX1NVUFBPUlRTKENYWF9SVkFMVUVf
UkVGRVJFTkNFUykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBS
ZWZQdHI8VD46Om9wZXJhdG9yPShSZWZQdHI8VD4mJiBvKQorICAgIHsKKyAgICAgICAgaWYgKG1f
cHRyICE9IG8uZ2V0KCkpIHsKKyAgICAgICAgICAgIGRlcmVmSWZOb3ROdWxsKG1fcHRyKTsKKyAg
ICAgICAgICAgIG1fcHRyID0gby5yZWxlYXNlKCkubGVha1JlZigpOworICAgICAgICB9CisgICAg
ICAgIHJldHVybiAqdGhpczsKKyAgICB9CiAKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBpbmxpbmUgUmVmUHRyPFQ+JiBSZWZQdHI8VD46Om9wZXJhdG9yPShS
ZWZQdHI8VT4mJiBvKQorICAgIHsKKyAgICAgICAgaWYgKG1fcHRyICE9IG8uZ2V0KCkpIHsKKyAg
ICAgICAgICAgIGRlcmVmSWZOb3ROdWxsKG1fcHRyKTsKKyAgICAgICAgICAgIG1fcHRyID0gby5y
ZWxlYXNlKCkubGVha1JlZigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICB9CisjZW5kaWYKICAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBpbmxpbmUgdm9pZCBSZWZQdHI8VD46
OnN3YXAoUmVmUHRyPFQ+JiBvKQogICAgIHsKICAgICAgICAgc3RkOjpzd2FwKG1fcHRyLCBvLm1f
cHRyKTsK
</data>
<flag name="review"
          id="220894"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199413</attachid>
            <date>2013-04-24 04:38:19 -0700</date>
            <delta_ts>2013-04-25 12:11:26 -0700</delta_ts>
            <desc>patch v4</desc>
            <filename>bug115033_v4</filename>
            <type>text/plain</type>
            <size>2912</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDk5MjViYzg2YzllMmYzN2ZjOWUwNDA2ZjJmYjQwMGVkOGRkMDFmY2MKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEFwciAyMyAxNjo1MTo0NCAyMDEzICswMzAwCgogICAgYnVnMTE1MDMzCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCAwOTk5
ZWNmLi5kNjAxMWE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA0LTIzICBNaWtoYWlsIFBv
emRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIEFkZCBt
b3ZlIHNlbWFudGljcyB0byBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBtb3ZlIGNvbnN0cnVjdG9ycyBhbmQgbW92ZSBhc3NpZ25tZW50
IG9wZXJhdG9ycyB0byBSZWZQdHIgd2hlbgorICAgICAgICBDT01QSUxFUl9TVVBQT1JUUyhDWFhf
UlZBTFVFX1JFRkVSRU5DRVMpLgorICAgICAgICBUaGlzIG9idmlhdGVzIHVubmVjZXNzYXJ5IHJl
ZmZpbmcvdXJlZmZpbmcgd2hlbiBSZWZQdHIgaXMgY3JlYXRlZAorICAgICAgICBvciBhc3NpZ25l
ZCBmcm9tIHJ2YWx1ZSByZWZlcmVuY2VzLgorCisgICAgICAgICogd3RmL1JlZlB0ci5oOgorICAg
ICAgICAoUmVmUHRyKToKKyAgICAgICAgKFdURjo6UmVmUHRyOjpSZWZQdHIpOgorICAgICAgICAo
V1RGOjpSZWZQdHI6Om9wZXJhdG9yPSk6CisKIDIwMTMtMDQtMjEgIEJlbmphbWluIFBvdWxhaW4g
IDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcHJvdmUgU3RyaW5nSW1wbCBjb2Rl
IGRlbnNpdHkgZm9yIG9sZGVyIEFSTSBoYXJkd2FyZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93
dGYvUmVmUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAppbmRleCAzMjJjYmQ2Li44ZmRh
YTFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi9SZWZQdHIuaAorKysgYi9Tb3VyY2UvV1RG
L3d0Zi9SZWZQdHIuaApAQCAtNDMsNiArNDMsMTEgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAg
IEFMV0FZU19JTkxJTkUgUmVmUHRyKGNvbnN0IFJlZlB0ciYgbykgOiBtX3B0cihvLm1fcHRyKSB7
IHJlZklmTm90TnVsbChtX3B0cik7IH0KICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVm
UHRyKGNvbnN0IFJlZlB0cjxVPiYgbykgOiBtX3B0cihvLmdldCgpKSB7IHJlZklmTm90TnVsbCht
X3B0cik7IH0KIAorI2lmIENPTVBJTEVSX1NVUFBPUlRTKENYWF9SVkFMVUVfUkVGRVJFTkNFUykK
KyAgICAgICAgQUxXQVlTX0lOTElORSBSZWZQdHIoUmVmUHRyJiYgbykgOiBtX3B0cihvLnJlbGVh
c2UoKS5sZWFrUmVmKCkpIHsgfQorICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIo
UmVmUHRyPFU+JiYgbykgOiBtX3B0cihvLnJlbGVhc2UoKS5sZWFrUmVmKCkpIHsgfQorI2VuZGlm
CisKICAgICAgICAgLy8gU2VlIGNvbW1lbnRzIGluIFBhc3NSZWZQdHIuaCBmb3IgYW4gZXhwbGFu
YXRpb24gb2Ygd2h5IHRoaXMgdGFrZXMgYSBjb25zdCByZWZlcmVuY2UuCiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IFJlZlB0cihjb25zdCBQYXNzUmVmUHRyPFU+Jik7CiAKQEAgLTc3LDcg
KzgyLDEwIEBAIG5hbWVzcGFjZSBXVEYgewogI2VuZGlmCiAgICAgICAgIHRlbXBsYXRlPHR5cGVu
YW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KGNvbnN0IFJlZlB0cjxVPiYpOwogICAgICAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBQYXNzUmVmUHRyPFU+Jik7
Ci0KKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhfUlZBTFVFX1JFRkVSRU5DRVMpCisgICAgICAg
IFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0ciYmKTsKKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gUmVmUHRyJiBvcGVyYXRvcj0oUmVmUHRyPFU+JiYpOworI2VuZGlmCiAgICAgICAgIHZvaWQg
c3dhcChSZWZQdHImKTsKIAogICAgICAgICBzdGF0aWMgVCogaGFzaFRhYmxlRGVsZXRlZFZhbHVl
KCkgeyByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxUKj4oLTEpOyB9CkBAIC0xNDIsNyArMTUwLDIz
IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBkZXJlZklmTm90TnVsbChwdHIpOwogICAgICAg
ICByZXR1cm4gKnRoaXM7CiAgICAgfQorI2lmIENPTVBJTEVSX1NVUFBPUlRTKENYWF9SVkFMVUVf
UkVGRVJFTkNFUykKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBpbmxpbmUgUmVmUHRyPFQ+JiBS
ZWZQdHI8VD46Om9wZXJhdG9yPShSZWZQdHI8VD4mJiBvKQorICAgIHsKKyAgICAgICAgVCogcHRy
ID0gbV9wdHI7CisgICAgICAgIG1fcHRyID0gby5yZWxlYXNlKCkubGVha1JlZigpOworICAgICAg
ICBkZXJlZklmTm90TnVsbChwdHIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0
cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oUmVmUHRyPFU+JiYgbykKKyAgICB7CisgICAgICAg
IFQqIHB0ciA9IG1fcHRyOworICAgICAgICBtX3B0ciA9IG8ucmVsZWFzZSgpLmxlYWtSZWYoKTsK
KyAgICAgICAgZGVyZWZJZk5vdE51bGwocHRyKTsKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAg
IH0KKyNlbmRpZgogICAgIHRlbXBsYXRlPGNsYXNzIFQ+IGlubGluZSB2b2lkIFJlZlB0cjxUPjo6
c3dhcChSZWZQdHI8VD4mIG8pCiAgICAgewogICAgICAgICBzdGQ6OnN3YXAobV9wdHIsIG8ubV9w
dHIpOwo=
</data>
<flag name="review"
          id="220992"
          type_id="1"
          status="-"
          setter="benjamin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199733</attachid>
            <date>2013-04-25 12:11:26 -0700</date>
            <delta_ts>2013-04-26 02:09:44 -0700</delta_ts>
            <desc>patch v5</desc>
            <filename>bug115033_v5</filename>
            <type>text/plain</type>
            <size>3001</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IDFmM2E2MGYyYWMzM2EwM2E5OTVkNjJhZGIxMTQyODUzNzg4NTY3ZTEKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEFwciAyMyAxNjo1MTo0NCAyMDEzICswMzAwCgogICAgYnVnMTE1MDMzCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBlNGY2
OGI0Li5jYjIzZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA0LTIzICBNaWtoYWlsIFBv
emRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIEFkZCBt
b3ZlIHNlbWFudGljcyB0byBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBtb3ZlIGNvbnN0cnVjdG9ycyBhbmQgbW92ZSBhc3NpZ25tZW50
IG9wZXJhdG9ycyB0byBSZWZQdHIgd2hlbgorICAgICAgICBDT01QSUxFUl9TVVBQT1JUUyhDWFhf
UlZBTFVFX1JFRkVSRU5DRVMpLgorICAgICAgICBUaGlzIG9idmlhdGVzIHVubmVjZXNzYXJ5IHJl
ZmZpbmcvdXJlZmZpbmcgd2hlbiBSZWZQdHIgaXMgY3JlYXRlZAorICAgICAgICBvciBhc3NpZ25l
ZCBmcm9tIHJ2YWx1ZSByZWZlcmVuY2VzLgorCisgICAgICAgICogd3RmL1JlZlB0ci5oOgorICAg
ICAgICAoUmVmUHRyKToKKyAgICAgICAgKFdURjo6UmVmUHRyOjpSZWZQdHIpOgorICAgICAgICAo
V1RGOjpSZWZQdHI6Om9wZXJhdG9yPSk6CisKIDIwMTMtMDQtMjMgIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxsZWQgb3V0IG1vcmUgY2FzZXMgb2YgYnJh
bmNoIGZvbGRpbmcgaW4gYnl0ZWNvZGUgd2hlbiBlbWl0dGluZyBleHByZXNzaW9ucyBpbnRvIGEg
YnJhbmNoaW5nIGNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIv
U291cmNlL1dURi93dGYvUmVmUHRyLmgKaW5kZXggMzIyY2JkNi4uNjlhZTE0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmUHRyLmgK
QEAgLTQzLDYgKzQzLDExIEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICBBTFdBWVNfSU5MSU5F
IFJlZlB0cihjb25zdCBSZWZQdHImIG8pIDogbV9wdHIoby5tX3B0cikgeyByZWZJZk5vdE51bGwo
bV9wdHIpOyB9CiAgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0cihjb25zdCBSZWZQ
dHI8VT4mIG8pIDogbV9wdHIoby5nZXQoKSkgeyByZWZJZk5vdE51bGwobV9wdHIpOyB9CiAKKyNp
ZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhfUlZBTFVFX1JFRkVSRU5DRVMpCisgICAgICAgIEFMV0FZ
U19JTkxJTkUgUmVmUHRyKFJlZlB0ciYmIG8pIDogbV9wdHIoby5yZWxlYXNlKCkubGVha1JlZigp
KSB7IH0KKyAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyKFJlZlB0cjxVPiYmIG8p
IDogbV9wdHIoby5yZWxlYXNlKCkubGVha1JlZigpKSB7IH0KKyNlbmRpZgorCiAgICAgICAgIC8v
IFNlZSBjb21tZW50cyBpbiBQYXNzUmVmUHRyLmggZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0
aGlzIHRha2VzIGEgY29uc3QgcmVmZXJlbmNlLgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBV
PiBSZWZQdHIoY29uc3QgUGFzc1JlZlB0cjxVPiYpOwogCkBAIC03Nyw3ICs4MiwxMCBAQCBuYW1l
c3BhY2UgV1RGIHsKICNlbmRpZgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIm
IG9wZXJhdG9yPShjb25zdCBSZWZQdHI8VT4mKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VT4gUmVmUHRyJiBvcGVyYXRvcj0oY29uc3QgUGFzc1JlZlB0cjxVPiYpOwotCisjaWYgQ09NUElM
RVJfU1VQUE9SVFMoQ1hYX1JWQUxVRV9SRUZFUkVOQ0VTKQorICAgICAgICBSZWZQdHImIG9wZXJh
dG9yPShSZWZQdHImJik7CisgICAgICAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3Bl
cmF0b3I9KFJlZlB0cjxVPiYmKTsKKyNlbmRpZgogICAgICAgICB2b2lkIHN3YXAoUmVmUHRyJik7
CiAKICAgICAgICAgc3RhdGljIFQqIGhhc2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIHJl
aW50ZXJwcmV0X2Nhc3Q8VCo+KC0xKTsgfQpAQCAtMTQyLDcgKzE1MCwyNSBAQCBuYW1lc3BhY2Ug
V1RGIHsKICAgICAgICAgZGVyZWZJZk5vdE51bGwocHRyKTsKICAgICAgICAgcmV0dXJuICp0aGlz
OwogICAgIH0KKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhfUlZBTFVFX1JFRkVSRU5DRVMpCisg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVy
YXRvcj0oUmVmUHRyPFQ+JiYgbykKKyAgICB7CisgICAgICAgIGlmICh0aGlzICE9ICZvKSB7Cisg
ICAgICAgICAgICBkZXJlZklmTm90TnVsbChtX3B0cik7CisgICAgICAgICAgICBtX3B0ciA9IG8u
cmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7Cisg
ICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxhdGU8dHlwZW5hbWUgVT4gaW5s
aW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oUmVmUHRyPFU+JiYgbykKKyAgICB7
CisgICAgICAgIGlmICh0aGlzICE9ICZvKSB7CisgICAgICAgICAgICBkZXJlZklmTm90TnVsbCht
X3B0cik7CisgICAgICAgICAgICBtX3B0ciA9IG8ucmVsZWFzZSgpLmxlYWtSZWYoKTsKKyAgICAg
ICAgfQorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorI2VuZGlmCiAgICAgdGVtcGxhdGU8
Y2xhc3MgVD4gaW5saW5lIHZvaWQgUmVmUHRyPFQ+Ojpzd2FwKFJlZlB0cjxUPiYgbykKICAgICB7
CiAgICAgICAgIHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7Cg==
</data>
<flag name="review"
          id="221198"
          type_id="1"
          status="+"
          setter="benjamin"
    />
    <flag name="commit-queue"
          id="221203"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>199804</attachid>
            <date>2013-04-26 02:09:44 -0700</date>
            <delta_ts>2013-04-26 07:36:27 -0700</delta_ts>
            <desc>patch v6</desc>
            <filename>bug115033_v6</filename>
            <type>text/plain</type>
            <size>3004</size>
            <attacher name="Mikhail Pozdnyakov">mikhail.pozdnyakov</attacher>
            
              <data encoding="base64">Y29tbWl0IGU4YzkxMDQ2MjkzNjI2ODViYTU4ZGZiMGQwMGJhZjE1NzJjZDAxZDQKQXV0aG9yOiBN
aWtoYWlsIFBvemRueWFrb3YgPG1pa2hhaWwucG96ZG55YWtvdkBpbnRlbC5jb20+CkRhdGU6ICAg
VHVlIEFwciAyMyAxNjo1MTo0NCAyMDEzICswMzAwCgogICAgYnVnMTE1MDMzCgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBlNGY2
OGI0Li5jYjIzZDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEzLTA0LTIzICBNaWtoYWlsIFBv
emRueWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgorCisgICAgICAgIEFkZCBt
b3ZlIHNlbWFudGljcyB0byBSZWZQdHIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZCBtb3ZlIGNvbnN0cnVjdG9ycyBhbmQgbW92ZSBhc3NpZ25tZW50
IG9wZXJhdG9ycyB0byBSZWZQdHIgd2hlbgorICAgICAgICBDT01QSUxFUl9TVVBQT1JUUyhDWFhf
UlZBTFVFX1JFRkVSRU5DRVMpLgorICAgICAgICBUaGlzIG9idmlhdGVzIHVubmVjZXNzYXJ5IHJl
ZmZpbmcvdXJlZmZpbmcgd2hlbiBSZWZQdHIgaXMgY3JlYXRlZAorICAgICAgICBvciBhc3NpZ25l
ZCBmcm9tIHJ2YWx1ZSByZWZlcmVuY2VzLgorCisgICAgICAgICogd3RmL1JlZlB0ci5oOgorICAg
ICAgICAoUmVmUHRyKToKKyAgICAgICAgKFdURjo6UmVmUHRyOjpSZWZQdHIpOgorICAgICAgICAo
V1RGOjpSZWZQdHI6Om9wZXJhdG9yPSk6CisKIDIwMTMtMDQtMjMgIEdlb2ZmcmV5IEdhcmVuICA8
Z2dhcmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBGaWxsZWQgb3V0IG1vcmUgY2FzZXMgb2YgYnJh
bmNoIGZvbGRpbmcgaW4gYnl0ZWNvZGUgd2hlbiBlbWl0dGluZyBleHByZXNzaW9ucyBpbnRvIGEg
YnJhbmNoaW5nIGNvbnRleHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1JlZlB0ci5oIGIv
U291cmNlL1dURi93dGYvUmVmUHRyLmgKaW5kZXggMzIyY2JkNi4uNDA0MDI5ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dURi93dGYvUmVmUHRyLmgKKysrIGIvU291cmNlL1dURi93dGYvUmVmUHRyLmgK
QEAgLTI0LDYgKzI0LDcgQEAKICNkZWZpbmUgV1RGX1JlZlB0cl9oCiAKICNpbmNsdWRlIDxhbGdv
cml0aG0+CisjaW5jbHVkZSA8dXRpbGl0eT4KICNpbmNsdWRlIDx3dGYvRmFzdEFsbG9jQmFzZS5o
PgogI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAKQEAgLTQzLDYgKzQ0LDExIEBAIG5hbWVz
cGFjZSBXVEYgewogICAgICAgICBBTFdBWVNfSU5MSU5FIFJlZlB0cihjb25zdCBSZWZQdHImIG8p
IDogbV9wdHIoby5tX3B0cikgeyByZWZJZk5vdE51bGwobV9wdHIpOyB9CiAgICAgICAgIHRlbXBs
YXRlPHR5cGVuYW1lIFU+IFJlZlB0cihjb25zdCBSZWZQdHI8VT4mIG8pIDogbV9wdHIoby5nZXQo
KSkgeyByZWZJZk5vdE51bGwobV9wdHIpOyB9CiAKKyNpZiBDT01QSUxFUl9TVVBQT1JUUyhDWFhf
UlZBTFVFX1JFRkVSRU5DRVMpCisgICAgICAgIEFMV0FZU19JTkxJTkUgUmVmUHRyKFJlZlB0ciYm
IG8pIDogbV9wdHIoby5yZWxlYXNlKCkubGVha1JlZigpKSB7IH0KKyAgICAgICAgdGVtcGxhdGU8
dHlwZW5hbWUgVT4gUmVmUHRyKFJlZlB0cjxVPiYmIG8pIDogbV9wdHIoby5yZWxlYXNlKCkubGVh
a1JlZigpKSB7IH0KKyNlbmRpZgorCiAgICAgICAgIC8vIFNlZSBjb21tZW50cyBpbiBQYXNzUmVm
UHRyLmggZm9yIGFuIGV4cGxhbmF0aW9uIG9mIHdoeSB0aGlzIHRha2VzIGEgY29uc3QgcmVmZXJl
bmNlLgogICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHIoY29uc3QgUGFzc1JlZlB0
cjxVPiYpOwogCkBAIC03Nyw3ICs4MywxMCBAQCBuYW1lc3BhY2UgV1RGIHsKICNlbmRpZgogICAg
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBVPiBSZWZQdHImIG9wZXJhdG9yPShjb25zdCBSZWZQdHI8
VT4mKTsKICAgICAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVT4gUmVmUHRyJiBvcGVyYXRvcj0oY29u
c3QgUGFzc1JlZlB0cjxVPiYpOwotCisjaWYgQ09NUElMRVJfU1VQUE9SVFMoQ1hYX1JWQUxVRV9S
RUZFUkVOQ0VTKQorICAgICAgICBSZWZQdHImIG9wZXJhdG9yPShSZWZQdHImJik7CisgICAgICAg
IHRlbXBsYXRlPHR5cGVuYW1lIFU+IFJlZlB0ciYgb3BlcmF0b3I9KFJlZlB0cjxVPiYmKTsKKyNl
bmRpZgogICAgICAgICB2b2lkIHN3YXAoUmVmUHRyJik7CiAKICAgICAgICAgc3RhdGljIFQqIGhh
c2hUYWJsZURlbGV0ZWRWYWx1ZSgpIHsgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VCo+KC0xKTsg
fQpAQCAtMTQyLDcgKzE1MSwxOSBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgZGVyZWZJZk5v
dE51bGwocHRyKTsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KKyNpZiBDT01QSUxFUl9T
VVBQT1JUUyhDWFhfUlZBTFVFX1JFRkVSRU5DRVMpCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
aW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oUmVmUHRyPFQ+JiYgbykKKyAg
ICB7CisgICAgICAgIFJlZlB0cjxUPihzdGQ6Om1vdmUobykpLnN3YXAoKnRoaXMpOworICAgICAg
ICByZXR1cm4gKnRoaXM7CisgICAgfQogCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gdGVtcGxh
dGU8dHlwZW5hbWUgVT4gaW5saW5lIFJlZlB0cjxUPiYgUmVmUHRyPFQ+OjpvcGVyYXRvcj0oUmVm
UHRyPFU+JiYgbykKKyAgICB7CisgICAgICAgIFJlZlB0cjxUPihzdGQ6Om1vdmUobykpLnN3YXAo
KnRoaXMpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorI2VuZGlmCiAgICAgdGVtcGxh
dGU8Y2xhc3MgVD4gaW5saW5lIHZvaWQgUmVmUHRyPFQ+Ojpzd2FwKFJlZlB0cjxUPiYgbykKICAg
ICB7CiAgICAgICAgIHN0ZDo6c3dhcChtX3B0ciwgby5tX3B0cik7Cg==
</data>
<flag name="review"
          id="221291"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>