<?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>22834</bug_id>
          
          <creation_ts>2008-12-12 16:38:06 -0800</creation_ts>
          <short_desc>Mismatched memory free in the new CSSSelectorList</short_desc>
          <delta_ts>2022-07-13 15:13:52 -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>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>CONFIGURATION CHANGED</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="Brett Wilson (Google)">brettw</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>bnason</cc>
    
    <cc>deanm</cc>
    
    <cc>erikkay</cc>
    
    <cc>louis</cc>
    
    <cc>ppedriana</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>102398</commentid>
    <comment_count>0</comment_count>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2008-12-12 16:38:06 -0800</bug_when>
    <thetext>CSSParser::createFloatingSelector makes new CSSSelectors using new. These are passed around and eventually put into a CSSSelectorList. This list uses fastFree to free the data in the for loop in CSSSelectorList::adoptSelectorVector. I think the free should instead be delete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102399</commentid>
    <comment_count>1</comment_count>
      <attachid>25992</attachid>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2008-12-12 16:46:10 -0800</bug_when>
    <thetext>Created attachment 25992
Patch

I&apos;m not super familiar with this code, so I&apos;m not sure if there are other ways for the selectors to be created. Please check carefully.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102400</commentid>
    <comment_count>2</comment_count>
      <attachid>25992</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-12 17:03:42 -0800</bug_when>
    <thetext>Comment on attachment 25992
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102500</commentid>
    <comment_count>3</comment_count>
      <attachid>25992</attachid>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2008-12-14 11:14:25 -0800</bug_when>
    <thetext>Comment on attachment 25992
Patch

I now think this patch is wrong. I&apos;ll try to come up with another solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102571</commentid>
    <comment_count>4</comment_count>
      <attachid>26026</attachid>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2008-12-15 11:12:30 -0800</bug_when>
    <thetext>Created attachment 26026
Patch v2

I believe this patch is correct. The previous patch caused double delete problems, which only appeared on Windows for some reason. The problem is that delete also calls the destructor, so when the selector is &quot;moved&quot; in CSSSelectorList, it calls the destructor, then the destructor is called again when the list is freed.

This patch uses fastMalloc for the allocation to match the move and delete operations. This is my first ever use of placement new, so check my syntax carefully :)

I added a few comments about the allocation method since certain assumptions are made which aren&apos;t obvious (causing bugs like this one).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102601</commentid>
    <comment_count>5</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-12-15 14:14:10 -0800</bug_when>
    <thetext>I r-&apos;d the old patch now that brett says it&apos;s wrong (to remove it from the commit queue)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102606</commentid>
    <comment_count>6</comment_count>
      <attachid>26026</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-12-15 14:53:09 -0800</bug_when>
    <thetext>Comment on attachment 26026
Patch v2

Sadly, this is still wrong, but now it&apos;s wrong for the case where parsing failed.

In ~CSSParser(), deleteAllValues(m_floatingSelectors) is called, which will call delete on any selectors that are still in the m_floatingSelectors HashSet. So we can&apos;t allocate them in a way where delete won&apos;t work.

Maybe the best design is to add a function to CSSSelector that causes it to drop its data, and call it before calling delete in CSSSelectorList::adoptSelectorVector. It would be enough to just clear out the m_data union.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102687</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2008-12-16 11:40:53 -0800</bug_when>
    <thetext>We have global operator new which does fastMalloc(). It should be safe to fastFree() objects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102688</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2008-12-16 11:41:59 -0800</bug_when>
    <thetext>Finding better hackery to make purify happy would be good, but not in expense of loosing optimizations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>102812</commentid>
    <comment_count>9</comment_count>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2008-12-17 13:56:37 -0800</bug_when>
    <thetext>I think Antti is correct and I don&apos;t have any brilliant ideas (after discussing with him a bit on IRC) for improving this code without hurting performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105658</commentid>
    <comment_count>10</comment_count>
    <who name="Dean McNamee">deanm</who>
    <bug_when>2009-01-14 05:18:20 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; We have global operator new which does fastMalloc(). It should be safe to
&gt; fastFree() objects.
&gt; 

I don&apos;t think this should be relied upon.  The global operator new is optional (USE_SYSTEM_MALLOC), and specifically it&apos;s important not to rely on an application global new override, when embedders may want to opt out of that, or supply their own.  For example, Chromium Linux current doesn&apos;t work w/o USE_SYSTEM_MALLOC, because of complicated allocator mismatches (Paul Pedriana seems to be working on this problem).  It would be nice if we could override our new / delete to use a different allocator, but current that would mean that when you use new you get one allocator, and when you use fastFree (which will then use free()), you would get another allocator.  It would be allow that malloc/free and new/delete use different incompatible allocators.

In general I think new / delete / free mismatches can be a lot of trouble, and it&apos;s really important to keep them consistent, our you&apos;re really limiting the allocation options for embedders.  It&apos;s more than just pacifying purify, and we&apos;re already our Linux port is already seeing problems with the WebKit allocation design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105693</commentid>
    <comment_count>11</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-14 10:01:19 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #7)
&gt; &gt; We have global operator new which does fastMalloc(). It should be safe to
&gt; &gt; fastFree() objects.
&gt; 
&gt; I don&apos;t think this should be relied upon.

I agree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105939</commentid>
    <comment_count>12</comment_count>
      <attachid>26766</attachid>
    <who name="Dean McNamee">deanm</who>
    <bug_when>2009-01-15 12:06:04 -0800</bug_when>
    <thetext>Created attachment 26766
Patch attempt.

This is really not the cleanest approach, and technically by the C++ standard the behavior is undefined.  However, I think it&apos;s an improvement over the current allocation mismatch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105947</commentid>
    <comment_count>13</comment_count>
      <attachid>26766</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-01-15 12:59:29 -0800</bug_when>
    <thetext>Comment on attachment 26766
Patch attempt.

I don&apos;t think this is enough of an improvement.

If we&apos;re going to go to this trouble I wish we could do it right. The best way I can think of would be to implement swap for CSSSelector and use swap and delete instead of memcpy and fastFree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105951</commentid>
    <comment_count>14</comment_count>
    <who name="Dean McNamee">deanm</who>
    <bug_when>2009-01-15 13:06:46 -0800</bug_when>
    <thetext>Another hacky and probably inappropriate solution would be to zero the old selector after we call memcpy on it, and before calling delete on it.  We are still going to need the second half of the patch to control whether we use fastMalloc/fastFree, or delete.  However, with the way it&apos;s written, it seems like it will be a bit awkward.  Any thoughts on zeroing?

I will work on the swap implementation.

(In reply to comment #13)
&gt; (From update of attachment 26766 [review])
&gt; I don&apos;t think this is enough of an improvement.
&gt; 
&gt; If we&apos;re going to go to this trouble I wish we could do it right. The best way
&gt; I can think of would be to implement swap for CSSSelector and use swap and
&gt; delete instead of memcpy and fastFree.
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105952</commentid>
    <comment_count>15</comment_count>
    <who name="Brett Wilson (Google)">brettw</who>
    <bug_when>2009-01-15 13:10:45 -0800</bug_when>
    <thetext>I personally like the swap approach. I use it in my code from time to time in similar circumstances.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>105954</commentid>
    <comment_count>16</comment_count>
    <who name="Dean McNamee">deanm</who>
    <bug_when>2009-01-15 13:15:02 -0800</bug_when>
    <thetext>Well, we will be swapping uninitialized memory into the old Selector, and then it&apos;s destructor is going to crash.  You can&apos;t really implement a swap, you would need to implement a copyToAndClearSelf(CSSSelector otherSelector).  It seems a bit awkward to me.

The other option is to actually call the constructor, and use new[] instead of fastMalloc.  But I thought the whole argument originally was that there was some performance at stake, and now it would seem like we&apos;re doing a lot more work.

Let me know what you think is the best option.  Thanks.

(In reply to comment #15)
&gt; I personally like the swap approach. I use it in my code from time to time in
&gt; similar circumstances.
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107172</commentid>
    <comment_count>17</comment_count>
    <who name="Dean McNamee">deanm</who>
    <bug_when>2009-01-27 02:18:43 -0800</bug_when>
    <thetext>Hi,

My patch to use a delete reinterpret_cast&lt;&gt; is effectively the same thing as what&apos;s happening now, but it also fixes a real bug.  I feel like this is one of those cases where the patch isn&apos;t perfect, so instead we&apos;ll do nothing.  If someone is more familiar with the code and performance requirements, and is going to make a cleaner fix, that would be great.  In the meantime my patch would at least fix a bug.

(In reply to comment #16)
&gt; Well, we will be swapping uninitialized memory into the old Selector, and then
&gt; it&apos;s destructor is going to crash.  You can&apos;t really implement a swap, you
&gt; would need to implement a copyToAndClearSelf(CSSSelector otherSelector).  It
&gt; seems a bit awkward to me.
&gt; 
&gt; The other option is to actually call the constructor, and use new[] instead of
&gt; fastMalloc.  But I thought the whole argument originally was that there was
&gt; some performance at stake, and now it would seem like we&apos;re doing a lot more
&gt; work.
&gt; 
&gt; Let me know what you think is the best option.  Thanks.
&gt; 
&gt; (In reply to comment #15)
&gt; &gt; I personally like the swap approach. I use it in my code from time to time in
&gt; &gt; similar circumstances.
&gt; &gt; 
&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>111549</commentid>
    <comment_count>18</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2009-02-27 14:12:04 -0800</bug_when>
    <thetext>*** Bug 23473 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114547</commentid>
    <comment_count>19</comment_count>
      <attachid>26766</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2009-03-20 12:58:46 -0700</bug_when>
    <thetext>Comment on attachment 26766
Patch attempt.

&gt; -        fastFree(selectorVector[i]);
&gt; +        // We want to free the memory (which was allocated with new), but we
&gt; +        // don&apos;t want the destructor to run since it will affect the copy
&gt; +        // we&apos;ve just made.  In theory this is undefined, but operator delete
&gt; +        // is only defined taking a void*, so in practice it should be ok.
&gt; +        delete reinterpret_cast&lt;char*&gt;(selectorVector[i]);

While this is no better than fastFree in practice, you&apos;ve convinced me it’s worthwhile because it makes valgrind stop complaining, and this makes it slightly more likely the code would work if we made delete and fastFree incompatible with each other.

Once this is done, we still have a bug, but I suppose it’s a less serious one than what we have now.

&gt; +    // We had two cases in adoptSelectVector.  The fast case of a 1 element
&gt; +    // vector took the CSSSelector directly, which was allocated with new.
&gt; +    // The second case we allocated a new fastMalloc buffer, which sholud be
&gt; +    // freed with fastFree, and the destructors called manually.

Whoever lands this should fix the typo in &quot;sholud&quot;.

We also normally do one space after a period, not two.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114565</commentid>
    <comment_count>20</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-03-20 15:06:50 -0700</bug_when>
    <thetext>Assigned to levin for landing.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114572</commentid>
    <comment_count>21</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-03-20 15:23:59 -0700</bug_when>
    <thetext>Please add a link to the bug in the changelog in the future.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>114602</commentid>
    <comment_count>22</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2009-03-20 16:55:33 -0700</bug_when>
    <thetext>Committed as r41877.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179810</commentid>
    <comment_count>23</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2010-01-12 06:17:07 -0800</bug_when>
    <thetext>FastMalloc mismatch validation system (Platform.h, FAST_FAST_MALLOC_MATCH_VALIDATION=1) crashes on Linux-Qt in CSSSelectorList due to mismatch.  
Benbuck Nason has a solution for the problem, I reopen the bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179832</commentid>
    <comment_count>24</comment_count>
      <attachid>46375</attachid>
    <who name="Benbuck Nason">bnason</who>
    <bug_when>2010-01-12 07:51:15 -0800</bug_when>
    <thetext>Created attachment 46375
Patch for comment #23</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179833</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-12 07:51:56 -0800</bug_when>
    <thetext>Attachment 46375 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/ChangeLog:5:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:6:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:7:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:8:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:9:  Line contains tab character.  [whitespace/tab] [5]
WebCore/ChangeLog:10:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 6</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>179834</commentid>
    <comment_count>26</comment_count>
      <attachid>46376</attachid>
    <who name="Benbuck Nason">bnason</who>
    <bug_when>2010-01-12 07:55:09 -0800</bug_when>
    <thetext>Created attachment 46376
Patch for comment #23 (retry)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180258</commentid>
    <comment_count>27</comment_count>
      <attachid>46376</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-01-13 09:40:46 -0800</bug_when>
    <thetext>Comment on attachment 46376
Patch for comment #23 (retry)

The right fix is to change CSSParser.cpp to call &quot;new CSSSelector&quot; instead of &quot;fastNew&lt;CSSSelector&gt;()&quot;.

&gt; -                delete m_data.m_tagHistory;
&gt; +                fastDelete(m_data.m_tagHistory);

This isn&apos;t right. When m_hasRareData is true, then the tag history will be deleted as part of the destruction of OwnPtr. This will call delete, not fastDelete. So changing the code in ~CSSSelector to call fastDelete will not fix the mismatch. But since CSSSelector inherits from Noncopyable, there is no reason to explicitly use fastNew on a CSSSelector -- Noncopyable inherits from FastAllocBase, and so new should automatically use fastNew. This code change seems both incorrect and unnecessary.

&gt; -        delete s;
&gt; +        fastDelete(s);

Same comment here. Changing these call sites is incompatible with using OwnPtr&lt;CSSSelector&gt; elsewhere.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180635</commentid>
    <comment_count>28</comment_count>
    <who name="Zoltan Horvath">zoltan</who>
    <bug_when>2010-01-14 02:32:37 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; (From update of attachment 46376 [details])
&gt; The right fix is to change CSSParser.cpp to call &quot;new CSSSelector&quot; instead of
&gt; &quot;fastNew&lt;CSSSelector&gt;()&quot;.

We put fastNew into CSSParser.cpp to avoid valgrind&apos;s mismatched warnings in bug #25930.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180870</commentid>
    <comment_count>29</comment_count>
      <attachid>26766</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 12:58:34 -0800</bug_when>
    <thetext>Comment on attachment 26766
Patch attempt.

Clearing Darin Adler&apos;s review on this old patch and marking obsolete.  This patch was already landed by Levin, see above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>180871</commentid>
    <comment_count>30</comment_count>
      <attachid>26026</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-14 12:58:59 -0800</bug_when>
    <thetext>Comment on attachment 26026
Patch v2

Marking this old patch obsolete now that this bug has been re-opened for a second change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206789</commentid>
    <comment_count>31</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-03-31 16:13:42 -0700</bug_when>
    <thetext>Cleared myself from being the assignee (since I only did this for landing the patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1883395</commentid>
    <comment_count>32</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-07-13 15:13:52 -0700</bug_when>
    <thetext>This code has been significantly refactored since this patch was proposed. There doesn&apos;t seem to be any action we can take here.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>25992</attachid>
            <date>2008-12-12 16:46:10 -0800</date>
            <delta_ts>2008-12-15 14:12:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>delete.diff</filename>
            <type>text/plain</type>
            <size>1412</size>
            <attacher name="Brett Wilson (Google)">brettw</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
YjY5YzY0Zi4uNzVlZTIzNiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAwOC0xMi0xMiAgQnJldHQgV2lsc29u
ICA8YnJldHR3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4MzQKKworICAgICAgICBNYWtlIHRoZSBDU1NTZWxlY3RvciBmcmVlIGluIENTU1NlbGVjdG9y
TGlzdCBtYXRjaCB0aGUgd2F5IHRoZQorICAgICAgICBzZWxlY3RvcnMgYXJlIGFsbG9jYXRlZCBp
biBDU1NQYXJzZXIgKHZpYSBuZXcgcmF0aGVyIHRoYW4gZmFzdE1hbGxvYykuCisKKyAgICAgICAg
KiBjc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
TGlzdDo6YWRvcHRTZWxlY3RvclZlY3Rvcik6CisKIDIwMDgtMTItMTEgIFN0ZXZlIEZhbGtlbmJ1
cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBEZWxldGUgdGhlIHByZXZpb3VzIHRp
bWVyLXF1ZXVlIHRpbWVyIGluIHRoZSBtYWluIHRocmVhZCwganVzdCBwcmlvciB0byBzY2hlZHVs
aW5nIGEgbmV3IHRpbWVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKaW5kZXggNzI3NjE0MS4uZjk2
YTJlMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAorKysgYi9X
ZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgQ1NT
U2VsZWN0b3JMaXN0OjphZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxDU1NTZWxlY3Rvcio+JiBz
ZWxlY3RvclZlY3RvcikKICAgICBtX3NlbGVjdG9yQXJyYXkgPSByZWludGVycHJldF9jYXN0PENT
U1NlbGVjdG9yKj4oZmFzdE1hbGxvYyhzaXplb2YoQ1NTU2VsZWN0b3IpICogc2VsZWN0b3JWZWN0
b3Iuc2l6ZSgpKSk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpIHsKICAg
ICAgICAgbWVtY3B5KCZtX3NlbGVjdG9yQXJyYXlbaV0sIHNlbGVjdG9yVmVjdG9yW2ldLCBzaXpl
b2YoQ1NTU2VsZWN0b3IpKTsKLSAgICAgICAgZmFzdEZyZWUoc2VsZWN0b3JWZWN0b3JbaV0pOwor
ICAgICAgICBkZWxldGUgc2VsZWN0b3JWZWN0b3JbaV07CiAgICAgICAgIEFTU0VSVCghbV9zZWxl
Y3RvckFycmF5W2ldLmlzTGFzdEluU2VsZWN0b3JMaXN0KCkpOwogICAgIH0KICAgICBtX3NlbGVj
dG9yQXJyYXlbc2l6ZSAtIDFdLnNldExhc3RJblNlbGVjdG9yTGlzdCgpOwo=
</data>
<flag name="review"
          id="12228"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26026</attachid>
            <date>2008-12-15 11:12:30 -0800</date>
            <delta_ts>2010-01-14 12:58:59 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>selectors.diff</filename>
            <type>text/plain</type>
            <size>2050</size>
            <attacher name="Brett Wilson (Google)">brettw</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
Y2ZjNThjNC4uMzQzMGVjYyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAwOC0xMi0xNSAgQnJldHQgV2lsc29u
ICA8YnJldHR3QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI4MzQKKworICAgICAgICBNYWtlIHRoZSBjcmFldGlvbiBvZiBDU1NTZWxlY3RvcnMgbWF0Y2gg
dGhlIHdheSB0aGV5IGFyZSBkZWxldGVkCisgICAgICAgIHZpYSBmYXN0TWFsbG9jL2ZyZWUgaW4g
Q1NTU2VsZWN0b3JMaXN0LgorCisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IpOgorICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3JMaXN0Lmg6CisKIDIw
MDgtMTItMTUgIEFudHRpIEtvaXZpc3RvICA8YW50dGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2Vy
LmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggMjFiOGFmMC4uYTNiZTY4MiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCkBAIC00MzcyLDcgKzQzNzIsNyBAQCBVQ2hhciogQ1NTUGFyc2VyOjp0ZXh0
KGludCAqbGVuZ3RoKQogCiBDU1NTZWxlY3RvciogQ1NTUGFyc2VyOjpjcmVhdGVGbG9hdGluZ1Nl
bGVjdG9yKCkKIHsKLSAgICBDU1NTZWxlY3Rvciogc2VsZWN0b3IgPSBuZXcgQ1NTU2VsZWN0b3I7
CisgICAgQ1NTU2VsZWN0b3IqIHNlbGVjdG9yID0gbmV3IChmYXN0TWFsbG9jKHNpemVvZihDU1NT
ZWxlY3RvcikpKSBDU1NTZWxlY3RvcigpOwogICAgIG1fZmxvYXRpbmdTZWxlY3RvcnMuYWRkKHNl
bGVjdG9yKTsKICAgICByZXR1cm4gc2VsZWN0b3I7CiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDgzYWFmYTQuLmZi
ZDA4OWQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1dlYkNvcmUv
Y3NzL0NTU1BhcnNlci5oCkBAIC0xNTIsNiArMTUyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
CiAgICAgICAgIGludCB5eXBhcnNlKCk7CiAKKyAgICAgICAgLy8gVGhlIG5ldyBzZWxlY3RvciB3
aWxsIGJlIGFsbG9jYXRlZCB3aXRoIGZhc3RNYWxsb2MuCiAgICAgICAgIENTU1NlbGVjdG9yKiBj
cmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgIENTU1NlbGVjdG9yKiBzaW5rRmxvYXRp
bmdTZWxlY3RvcihDU1NTZWxlY3RvciopOwogCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvckxpc3QuaCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCmluZGV4IDdhNDFm
Y2YuLmRlMTI0MzcgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCisr
KyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5oCkBAIC0zNyw2ICszNyw4IEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKICAgICAgICAgfkNTU1NlbGVjdG9yTGlzdCgpOwogCiAgICAgICAgIHZv
aWQgYWRvcHQoQ1NTU2VsZWN0b3JMaXN0JiBsaXN0KTsKKworICAgICAgICAvLyBUaGUgaW5kaXZp
ZHVhbCBzZWxlY3RvcnMgbXVzdCBoYXZlIGJlZW4gYWxsb2NhdGVkIHdpdGggZmFzdE1hbGxvYy4K
ICAgICAgICAgdm9pZCBhZG9wdFNlbGVjdG9yVmVjdG9yKFZlY3RvcjxDU1NTZWxlY3Rvcio+JiBz
ZWxlY3RvclZlY3Rvcik7CiAgICAgICAgIAogICAgICAgICBDU1NTZWxlY3RvciogZmlyc3QoKSBj
b25zdCB7IHJldHVybiBtX3NlbGVjdG9yQXJyYXkgPyBtX3NlbGVjdG9yQXJyYXkgOiAwOyB9Cg==
</data>
<flag name="review"
          id="12254"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>26766</attachid>
            <date>2009-01-15 12:06:04 -0800</date>
            <delta_ts>2010-01-14 12:58:33 -0800</delta_ts>
            <desc>Patch attempt.</desc>
            <filename>x.diff</filename>
            <type>text/plain</type>
            <size>2540</size>
            <attacher name="Dean McNamee">deanm</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
NGNiZTdhOC4uNDg5YjU5YiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxMyBAQAorMjAwOS0wMS0xNSAgRGVhbiBNY05hbWVl
ICA8ZGVhbm1AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE1ha2Ugc3VyZSB0byBjb25zaXN0ZW50bHkgbWF0Y2ggbmV3L2RlbGV0
ZSBhbmQgZmFzdE1hbGxvYy9mYXN0RnJlZS4KKworICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxp
c3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjphZG9wdFNlbGVjdG9y
VmVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yTGlzdDo6ZGVsZXRlU2VsZWN0
b3JzKToKKwogMjAwOS0wMS0xNSAgQ2hyaXMgTWFycmluICA8Y21hcnJpbkBhcHBsZS5jb20+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRGFuIEJlcm5zdGVpbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
Y3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3Bw
CmluZGV4IDcyNzYxNDEuLjc1ZDZmMDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yTGlzdC5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcApAQCAtNTQs
NyArNTQsMTEgQEAgdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmFkb3B0U2VsZWN0b3JWZWN0b3IoVmVj
dG9yPENTU1NlbGVjdG9yKj4mIHNlbGVjdG9yVmVjdG9yKQogICAgIG1fc2VsZWN0b3JBcnJheSA9
IHJlaW50ZXJwcmV0X2Nhc3Q8Q1NTU2VsZWN0b3IqPihmYXN0TWFsbG9jKHNpemVvZihDU1NTZWxl
Y3RvcikgKiBzZWxlY3RvclZlY3Rvci5zaXplKCkpKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IHNpemU7ICsraSkgewogICAgICAgICBtZW1jcHkoJm1fc2VsZWN0b3JBcnJheVtpXSwgc2Vs
ZWN0b3JWZWN0b3JbaV0sIHNpemVvZihDU1NTZWxlY3RvcikpOwotICAgICAgICBmYXN0RnJlZShz
ZWxlY3RvclZlY3RvcltpXSk7CisgICAgICAgIC8vIFdlIHdhbnQgdG8gZnJlZSB0aGUgbWVtb3J5
ICh3aGljaCB3YXMgYWxsb2NhdGVkIHdpdGggbmV3KSwgYnV0IHdlCisgICAgICAgIC8vIGRvbid0
IHdhbnQgdGhlIGRlc3RydWN0b3IgdG8gcnVuIHNpbmNlIGl0IHdpbGwgYWZmZWN0IHRoZSBjb3B5
CisgICAgICAgIC8vIHdlJ3ZlIGp1c3QgbWFkZS4gIEluIHRoZW9yeSB0aGlzIGlzIHVuZGVmaW5l
ZCwgYnV0IG9wZXJhdG9yIGRlbGV0ZQorICAgICAgICAvLyBpcyBvbmx5IGRlZmluZWQgdGFraW5n
IGEgdm9pZCosIHNvIGluIHByYWN0aWNlIGl0IHNob3VsZCBiZSBvay4KKyAgICAgICAgZGVsZXRl
IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNlbGVjdG9yVmVjdG9yW2ldKTsKICAgICAgICAgQVNT
RVJUKCFtX3NlbGVjdG9yQXJyYXlbaV0uaXNMYXN0SW5TZWxlY3Rvckxpc3QoKSk7CiAgICAgfQog
ICAgIG1fc2VsZWN0b3JBcnJheVtzaXplIC0gMV0uc2V0TGFzdEluU2VsZWN0b3JMaXN0KCk7CkBA
IC02NSwxNSArNjksMjUgQEAgdm9pZCBDU1NTZWxlY3Rvckxpc3Q6OmRlbGV0ZVNlbGVjdG9ycygp
CiB7CiAgICAgaWYgKCFtX3NlbGVjdG9yQXJyYXkpCiAgICAgICAgIHJldHVybjsKKworICAgIC8v
IFdlIGhhZCB0d28gY2FzZXMgaW4gYWRvcHRTZWxlY3RWZWN0b3IuICBUaGUgZmFzdCBjYXNlIG9m
IGEgMSBlbGVtZW50CisgICAgLy8gdmVjdG9yIHRvb2sgdGhlIENTU1NlbGVjdG9yIGRpcmVjdGx5
LCB3aGljaCB3YXMgYWxsb2NhdGVkIHdpdGggbmV3LgorICAgIC8vIFRoZSBzZWNvbmQgY2FzZSB3
ZSBhbGxvY2F0ZWQgYSBuZXcgZmFzdE1hbGxvYyBidWZmZXIsIHdoaWNoIHNob2x1ZCBiZQorICAg
IC8vIGZyZWVkIHdpdGggZmFzdEZyZWUsIGFuZCB0aGUgZGVzdHJ1Y3RvcnMgY2FsbGVkIG1hbnVh
bGx5LgogICAgIENTU1NlbGVjdG9yKiBzID0gbV9zZWxlY3RvckFycmF5OwotICAgIHdoaWxlICgx
KSB7Ci0gICAgICAgIGJvb2wgZG9uZSA9IHMtPmlzTGFzdEluU2VsZWN0b3JMaXN0KCk7Ci0gICAg
ICAgIHMtPn5DU1NTZWxlY3RvcigpOwotICAgICAgICBpZiAoZG9uZSkKLSAgICAgICAgICAgIGJy
ZWFrOwotICAgICAgICArK3M7CisgICAgYm9vbCBkb25lID0gcy0+aXNMYXN0SW5TZWxlY3Rvckxp
c3QoKTsKKyAgICBpZiAoZG9uZSkgeworICAgICAgICBkZWxldGUgczsKKyAgICB9IGVsc2Ugewor
ICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgcy0+fkNTU1NlbGVjdG9yKCk7CisgICAg
ICAgICAgICBpZiAoZG9uZSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICsr
czsKKyAgICAgICAgICAgIGRvbmUgPSBzLT5pc0xhc3RJblNlbGVjdG9yTGlzdCgpOworICAgICAg
ICB9CisgICAgICAgIGZhc3RGcmVlKG1fc2VsZWN0b3JBcnJheSk7IAogICAgIH0KLSAgICBmYXN0
RnJlZShtX3NlbGVjdG9yQXJyYXkpOyAKIH0KIAogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46375</attachid>
            <date>2010-01-12 07:51:15 -0800</date>
            <delta_ts>2010-01-12 07:55:09 -0800</delta_ts>
            <desc>Patch for comment #23</desc>
            <filename>22834.patch</filename>
            <type>text/plain</type>
            <size>1738</size>
            <attacher name="Benbuck Nason">bnason</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzE0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDEtMTIgIEJlbmJ1Y2sgTmFzb24gIDxibmFzb25AbmV0Zmxp
eC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKwkJaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODM0CisJCU1pc21hdGNoZWQgbWVt
b3J5IGZyZWUgaW4gQ1NTU2VsZWN0b3JMaXN0CisJCQorCQlGaXggbWlzbWF0Y2hlZCBmYXN0TWFs
bG9jKCkvZGVsZXRlIGluIENTU1NlbGVjdG9yTGlzdDo6ZGVsZXRlU2VsZWN0b3JzKCkKKwkJYW5k
IENTU1NlbGVjdG9yOjp+Q1NTU2VsZWN0b3IoKSB3aGVuIEZBU1RfRkFTVF9NQUxMT0NfTUFUQ0hf
VkFMSURBVElPTj0xCisJCWlzIHNldC4KKworICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6On5DU1NTZWxlY3Rvcik6CisgICAgICAgICog
Y3NzL0NTU1NlbGVjdG9yTGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvckxp
c3Q6OmRlbGV0ZVNlbGVjdG9ycyk6CisKIDIwMTAtMDEtMTIgIEFkYW0gUm9iZW4gIDxhcm9iZW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFdpbmRvd3MgYWNjZWxlcmF0ZWQgY29tcG9zaXRpbmcgYnVp
bGQgZml4IGFmdGVyIHI1MzExMApJbmRleDogV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCShyZXZpc2lvbiA1MzE0MCkKKysr
IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICAgICAgaWYgKG1faGFzUmFyZURhdGEpCiAg
ICAgICAgICAgICAgICAgZGVsZXRlIG1fZGF0YS5tX3JhcmVEYXRhOwogICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGRlbGV0ZSBtX2RhdGEubV90YWdIaXN0b3J5OworICAgICAgICAg
ICAgICAgIGZhc3REZWxldGUobV9kYXRhLm1fdGFnSGlzdG9yeSk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvKioKSW5kZXg6IFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9yTGlzdC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0LmNwcAkocmV2aXNpb24gNTMxNDApCisr
KyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvckxpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3
ICs3Niw3IEBAIHZvaWQgQ1NTU2VsZWN0b3JMaXN0OjpkZWxldGVTZWxlY3RvcnMoKQogICAgIENT
U1NlbGVjdG9yKiBzID0gbV9zZWxlY3RvckFycmF5OwogICAgIGJvb2wgZG9uZSA9IHMtPmlzTGFz
dEluU2VsZWN0b3JMaXN0KCk7CiAgICAgaWYgKGRvbmUpCi0gICAgICAgIGRlbGV0ZSBzOworICAg
ICAgICBmYXN0RGVsZXRlKHMpOwogICAgIGVsc2UgewogICAgICAgICB3aGlsZSAoMSkgewogICAg
ICAgICAgICAgcy0+fkNTU1NlbGVjdG9yKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46376</attachid>
            <date>2010-01-12 07:55:09 -0800</date>
            <delta_ts>2010-06-11 10:40:45 -0700</delta_ts>
            <desc>Patch for comment #23 (retry)</desc>
            <filename>22834.patch</filename>
            <type>text/plain</type>
            <size>1766</size>
            <attacher name="Benbuck Nason">bnason</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzE0MCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDEtMTIgIEJlbmJ1Y2sgTmFzb24gIDxibmFzb25AbmV0Zmxp
eC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyODM0CisgICAgICAgIE1p
c21hdGNoZWQgbWVtb3J5IGZyZWUgaW4gQ1NTU2VsZWN0b3JMaXN0CisKKyAgICAgICAgRml4IG1p
c21hdGNoZWQgZmFzdE1hbGxvYygpL2RlbGV0ZSBpbiBDU1NTZWxlY3Rvckxpc3Q6OmRlbGV0ZVNl
bGVjdG9ycygpCisgICAgICAgIGFuZCBDU1NTZWxlY3Rvcjo6fkNTU1NlbGVjdG9yKCkgd2hlbiBG
QVNUX0ZBU1RfTUFMTE9DX01BVENIX1ZBTElEQVRJT049MQorICAgICAgICBpcyBzZXQuCisKKyAg
ICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
Ojp+Q1NTU2VsZWN0b3IpOgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvckxpc3QuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3JMaXN0OjpkZWxldGVTZWxlY3RvcnMpOgorCiAyMDEw
LTAxLTEyICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dz
IGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGJ1aWxkIGZpeCBhZnRlciByNTMxMTAKSW5kZXg6IFdl
YkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuaAkocmV2aXNpb24gNTMxNDApCisrKyBXZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCSh3
b3JraW5nIGNvcHkpCkBAIC01OCw3ICs1OCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIGlmIChtX2hhc1JhcmVEYXRhKQogICAgICAgICAgICAgICAgIGRlbGV0ZSBtX2RhdGEu
bV9yYXJlRGF0YTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBkZWxldGUgbV9k
YXRhLm1fdGFnSGlzdG9yeTsKKyAgICAgICAgICAgICAgICBmYXN0RGVsZXRlKG1fZGF0YS5tX3Rh
Z0hpc3RvcnkpOwogICAgICAgICB9CiAKICAgICAgICAgLyoqCkluZGV4OiBXZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvckxpc3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
TGlzdC5jcHAJKHJldmlzaW9uIDUzMTQwKQorKysgV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3JMaXN0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNyBAQCB2b2lkIENTU1NlbGVjdG9yTGlz
dDo6ZGVsZXRlU2VsZWN0b3JzKCkKICAgICBDU1NTZWxlY3RvciogcyA9IG1fc2VsZWN0b3JBcnJh
eTsKICAgICBib29sIGRvbmUgPSBzLT5pc0xhc3RJblNlbGVjdG9yTGlzdCgpOwogICAgIGlmIChk
b25lKQotICAgICAgICBkZWxldGUgczsKKyAgICAgICAgZmFzdERlbGV0ZShzKTsKICAgICBlbHNl
IHsKICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgIHMtPn5DU1NTZWxlY3RvcigpOwo=
</data>
<flag name="review"
          id="28720"
          type_id="1"
          status="-"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>