<?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>40376</bug_id>
          
          <creation_ts>2010-06-09 11:38:21 -0700</creation_ts>
          <short_desc>[Qt] Sometimes I see pixel dust when the transform is changing rapidly with Qt graphics layers</short_desc>
          <delta_ts>2010-08-14 08:21:23 -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>WebKit Qt</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Qt, QtTriaged</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>38744</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Sam Magnuson">smagnuso</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>jedrzej.nowacki</cc>
    
    <cc>kenneth</cc>
    
    <cc>luiz</cc>
    
    <cc>noam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>235906</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-09 11:38:21 -0700</bug_when>
    <thetext>It appears that graphicsview isn&apos;t taking into account the transform (since that is where the position lives in the webgraphicsview) when handleGeometryChange happens. I think this is what the quick fix in there was seeing as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235935</commentid>
    <comment_count>1</comment_count>
      <attachid>58273</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-09 12:33:57 -0700</bug_when>
    <thetext>Created attachment 58273
Adding a handleGeometryChange() to correct this problem.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237307</commentid>
    <comment_count>2</comment_count>
      <attachid>58555</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-12 10:20:24 -0700</bug_when>
    <thetext>Created attachment 58555
Proposed patch with proper coding style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238284</commentid>
    <comment_count>3</comment_count>
      <attachid>58555</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-06-15 01:16:44 -0700</bug_when>
    <thetext>Comment on attachment 58555
Proposed patch with proper coding style

I don&apos;t know about problem, but this patch won&apos;t be accepted because it doesn&apos;t apply (cq-) and have multiple coding style issues (r-). You can use WebKitTools/Scripts/check-coding-style script to find some coding style problems. 

Actually I should close this bug report as invalid, as it is not possible to reproduce the problem, please provide us a test case :-). Good luck!

&gt; +        No new tests. (OOPS!)
It is possible to add a new autotest?

&gt; +            if (QGraphicsScene *s = scene()) {
&apos;*&apos; is in a wrong place.

&gt; -    m_backingStoreKey = QPixmapCache::insert(pixmap);    
&gt; +    m_backingStoreKey = QPixmapCache::insert(pixmap);
Spaces at the end of the line

&gt; @@ -398,7 +410,10 @@ void GraphicsLayerQtImpl::updateTransform()
&gt;      if (!inverseOk)
&gt;          return;
&gt;  
&gt; -    setTransform(transform2D);
&gt; +        if ( transform2D != transform() ) {
&gt; +                handleGeometryChange();
&gt; +                setTransform(transform2D);
&gt; +        }
Wrong intendation

&gt; @@ -537,20 +552,23 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform
&gt;  
&gt;      if (m_changeMask &amp; SizeChange) {
&gt;          if (m_layer-&gt;size() != m_state.size) {
&gt; -            prepareGeometryChange();
&gt; +                        handleGeometryChange();
Wrong indentation

&gt; +#if 0
&gt;      // FIXME: this is a hack, due to a probable QGraphicsScene bug when rapidly modifying the perspective
&gt;      // but without this line we get graphic artifacts
&gt;      if ((m_changeMask &amp; ChildrenTransformChange) &amp;&amp; m_state.childrenTransform != m_layer-&gt;childrenTransform())
&gt;          if (scene())
&gt;              scene()-&gt;update();
&gt; +#endif
If you believe that this code in unneeded you should remove it.

&gt; +        // handleGeometryChange();
It is not a proper comment.

&gt;      if (!recursive)
&gt; -        return;    
&gt; +        return;
Spaces at the end of line.

&gt; -        }        
&gt; +        }
Spaces at the end of line.

&gt; +#if 1
&gt;          // FIXME: this is a hack, due to a probable QGraphicsScene bug.
&gt;          // Without this the opacity change doesn&apos;t always have immediate effect.
&gt;          if (m_layer.data()-&gt;scene() &amp;&amp; !m_layer.data()-&gt;opacity() &amp;&amp; opacity)
&gt;              m_layer.data()-&gt;scene()-&gt;update();
&gt; +#endif
#if 1 is not pointless as 1 == true, so this code will be always included.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238287</commentid>
    <comment_count>4</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-06-15 01:19:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; #if 1 is not pointless as 1 == true, so this code will be always included.
Oops, I mean that you can remove the #if 1 :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238337</commentid>
    <comment_count>5</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-06-15 05:43:19 -0700</bug_when>
    <thetext>Please provide a test case fro the bug</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238404</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-15 08:50:43 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 58555 [details])
&gt; I don&apos;t know about problem, but this patch won&apos;t be accepted because it doesn&apos;t apply (cq-) and have multiple coding style issues (r-). You can use WebKitTools/Scripts/check-coding-style script to find some coding style problems. 
&gt; 
&gt; Actually I should close this bug report as invalid, as it is not possible to reproduce the problem, please provide us a test case :-). Good luck!
&gt; 
&gt; &gt; +        No new tests. (OOPS!)
&gt; It is possible to add a new autotest?
&gt; 

I don&apos;t have an autotest, it was clearly a corner case that had the pixels left uncovered. I very much doubt I&apos;ll get a case to cover it - but can try later. Can you point me to a autotest that does pixel comparisons?

&gt; &gt; +            if (QGraphicsScene *s = scene()) {
&gt; &apos;*&apos; is in a wrong place.
&gt; 

For whatever its worth check-webkit-style doesn&apos;t flag it, thus I didn&apos;t spot it. Fixed.

&gt; &gt; -    m_backingStoreKey = QPixmapCache::insert(pixmap);    
&gt; &gt; +    m_backingStoreKey = QPixmapCache::insert(pixmap);
&gt; Spaces at the end of the line
&gt; 

Why do you want spaces at the end of the line?

&gt; &gt; @@ -398,7 +410,10 @@ void GraphicsLayerQtImpl::updateTransform()
&gt; &gt;      if (!inverseOk)
&gt; &gt;          return;
&gt; &gt;  
&gt; &gt; -    setTransform(transform2D);
&gt; &gt; +        if ( transform2D != transform() ) {
&gt; &gt; +                handleGeometryChange();
&gt; &gt; +                setTransform(transform2D);
&gt; &gt; +        }
&gt; Wrong intendation
&gt; 

Fixed, check-webkit-style didn&apos;t find this either. 

&gt; &gt; @@ -537,20 +552,23 @@ void GraphicsLayerQtImpl::flushChanges(bool recursive, bool forceUpdateTransform
&gt; &gt;  
&gt; &gt;      if (m_changeMask &amp; SizeChange) {
&gt; &gt;          if (m_layer-&gt;size() != m_state.size) {
&gt; &gt; -            prepareGeometryChange();
&gt; &gt; +                        handleGeometryChange();
&gt; Wrong indentation
&gt; 

Thanks.

&gt; &gt; +#if 0
&gt; &gt;      // FIXME: this is a hack, due to a probable QGraphicsScene bug when rapidly modifying the perspective
&gt; &gt;      // but without this line we get graphic artifacts
&gt; &gt;      if ((m_changeMask &amp; ChildrenTransformChange) &amp;&amp; m_state.childrenTransform != m_layer-&gt;childrenTransform())
&gt; &gt;          if (scene())
&gt; &gt;              scene()-&gt;update();
&gt; &gt; +#endif
&gt; If you believe that this code in unneeded you should remove it.
&gt; 

This was for No&apos;am to experiment with as I think my fix removes the need for the above &quot;hack&quot; as they are solving a similar problem. 

&gt; &gt; +        // handleGeometryChange();
&gt; It is not a proper comment.
&gt; 

In this case it isn&apos;t needed, but the review seems scattershot. I can&apos;t use #if 0 to leave in code that will still need to be experimented with, I can&apos;t use c comments to leave in code that warrants further examination. I see other places in the code base where a line of code is commented out, this doesn&apos;t seem to be a real issue.

&gt; &gt;      if (!recursive)
&gt; &gt; -        return;    
&gt; &gt; +        return;
&gt; Spaces at the end of line.
&gt; 
&gt; &gt; -        }        
&gt; &gt; +        }
&gt; Spaces at the end of line.
&gt; 

Again, I don&apos;t see why you want the spaces at the end of the line.

&gt; &gt; +#if 1
&gt; &gt;          // FIXME: this is a hack, due to a probable QGraphicsScene bug.
&gt; &gt;          // Without this the opacity change doesn&apos;t always have immediate effect.
&gt; &gt;          if (m_layer.data()-&gt;scene() &amp;&amp; !m_layer.data()-&gt;opacity() &amp;&amp; opacity)
&gt; &gt;              m_layer.data()-&gt;scene()-&gt;update();
&gt; &gt; +#endif
&gt; #if 1 is not pointless as 1 == true, so this code will be always included.

Agree the #if 1 here is unnecessary - its a piece of code I never triggered so I left in No&apos;am&apos;s &quot;hack&quot; to work around the issue since I couldn&apos;t confirm whether it was still necessary. My hope was that No&apos;am would test if it was still necessary in the test that required it and possibly remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238490</commentid>
    <comment_count>7</comment_count>
      <attachid>58802</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-15 11:58:37 -0700</bug_when>
    <thetext>Created attachment 58802
Proposed patch with proper coding style and commented on the test case in the changelog</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>238773</commentid>
    <comment_count>8</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-06-16 03:40:47 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (In reply to comment #3)
&gt; &gt; (From update of attachment 58555 [details] [details])
&gt; &gt; Actually I should close this bug report as invalid, as it is not possible to reproduce the problem, please provide us a test case :-). Good luck!
&gt; &gt;
&gt; &gt; &gt; +        No new tests. (OOPS!)
&gt; &gt; It is possible to add a new autotest?
&gt; I don&apos;t have an autotest, it was clearly a corner case that had the pixels left uncovered. I very much doubt I&apos;ll get a case to cover it - but can try later. Can you point me to a autotest that does pixel comparisons?
I can&apos;t as you didn&apos;t provide a test case, I can&apos;t reproduce it. I&apos;m not sure what you want to fix, but maybe you should look at graphicsview autotest (part of Qt).

&gt; &gt; Spaces at the end of the line
&gt; Why do you want spaces at the end of the line?
Sorry, my message wasn&apos;t clear. I don&apos;t want spaces at the end of line, but you shouldn&apos;t change it, as it is not related to the pixel dust problem. Actually the rule is more general a patch should touch only relevant code and only fix one issue.

&gt; &gt; &gt; +#if 0
&gt; &gt; If you believe that this code in unneeded you should remove it.
&gt; This was for Noam to experiment with as I think my fix removes the need for the above &quot;hack&quot; as they are solving a similar problem.

&gt; &gt; &gt; +#if 1
&gt; Agree the #if 1 here is unnecessary - its a piece of code I never triggered so I left in Noam&apos;s &quot;hack&quot; to work around the issue since I couldn&apos;t confirm whether it was still necessary. My hope was that Noam would test if it was still necessary in the test that required it and possibly remove it.
Great, so we need Noam&apos;s expertise :-)
Preferably, we avoid #if 0/1. If you feel that a code could be removed then you can remove it, if code have to stay then you shouldn&apos;t touch it. If you need to share some experimental code, try to do it in other branch unless it is something really big. WebKit code base is huge and it is difficult to maintain it so lets try to keep it simple :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>241509</commentid>
    <comment_count>9</comment_count>
      <attachid>59431</attachid>
    <who name="Sam Magnuson">smagnuso</who>
    <bug_when>2010-06-22 16:08:49 -0700</bug_when>
    <thetext>Created attachment 59431
Rediff against trunk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264667</commentid>
    <comment_count>10</comment_count>
      <attachid>59431</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-08-14 07:33:00 -0700</bug_when>
    <thetext>Comment on attachment 59431
Rediff against trunk

Almost there, just a few nits

WebCore/platform/graphics/qt/GraphicsLayerQt.cpp:171
 +      void    handleGeometryChange()
wrong coding style... no need to add more than one space after void.

WebCore/platform/graphics/qt/GraphicsLayerQt.cpp:174
 +              // I do this here because it seems QGraphicsView doesn&apos;t seem to take into account the translated bounding rect when prepareGeometryChange happens
Add a dot at the end. Personally I would wrap it at the middle

WebCore/platform/graphics/qt/GraphicsLayerQt.cpp:176
 +                  const QRectF g = mapRectToScene(boundingRect());
g ? geometry?

WebCore/platform/graphics/qt/GraphicsLayerQt.cpp:453
 +      if ( transform2D != transform() ) {
Remove space after transform2D and after transform()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264681</commentid>
    <comment_count>11</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-08-14 08:11:57 -0700</bug_when>
    <thetext>We&apos;re rewriting AC in a cross-platform manner. New features won&apos;t be added to GraphicsLayerQt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264685</commentid>
    <comment_count>12</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-08-14 08:16:24 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; We&apos;re rewriting AC in a cross-platform manner. New features won&apos;t be added to GraphicsLayerQt.

So this is not interesting for the qtwebkit2.0.x branch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264688</commentid>
    <comment_count>13</comment_count>
    <who name="Noam Rosenthal">noam</who>
    <bug_when>2010-08-14 08:19:34 -0700</bug_when>
    <thetext>It is, but it&apos;s a corner case and in low priority to getting the major ones work faster (which would happen after 2.0/2.1).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264690</commentid>
    <comment_count>14</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2010-08-14 08:21:23 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; It is, but it&apos;s a corner case and in low priority to getting the major ones work faster (which would happen after 2.0/2.1).

OK, I will let that up to you then. Please take a look at AC patches on webkit.org/pending-review then to WONTFIX those needed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58273</attachid>
            <date>2010-06-09 12:33:57 -0700</date>
            <delta_ts>2010-06-12 10:20:24 -0700</delta_ts>
            <desc>Adding a handleGeometryChange() to correct this problem.</desc>
            <filename>0002-putting-in-the-handleGeometryChange-fix.patch</filename>
            <type>text/plain</type>
            <size>6363</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">RnJvbSBlYmU5NWY1YWI0ZTVmZjEwNmRjYjQxMGExMzQyYTcxNTRmYTEwZjAxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBzbWFnbnVzb24gPHNtYWdudXNvQGdtYWlsLmNvbT4KRGF0ZTog
VHVlLCA4IEp1biAyMDEwIDExOjAwOjIwIC0wNzAwClN1YmplY3Q6IFtQQVRDSCAyLzhdIHB1dHRp
bmcgaW4gdGhlIGhhbmRsZUdlb21ldHJ5Q2hhbmdlIGZpeAoKY2hhbmdsb2cgZm9yIDBhZmIzNWEx
NTg5MjI4YWE3YjQ0MDRhZTBmMmY5NTZhYmQ3NDBjMzkKLS0tCiBXZWJDb3JlL0NoYW5nZUxvZyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIwICsrKysrKysrKysrKysKIFdlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcCB8ICAgMzIgKysrKysr
KysrKysrKysrKystLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDYgZGVs
ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxZDlkNzM5Li42Y2JjMzI1IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEwLTA2LTA5ICBz
bWFnbnVzb24gIDxzbWFnbnVzb0BnbWFpbC5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBTb21ldGltZXMgSSBzZWUgcGl4ZWwgZHVzdCB3
aGVuIHRoZSB0cmFuc2Zvcm0gaXMgY2hhbmdpbmcKKwlyYXBpZGx5IHdpdGggUXQgZ3JhcGhpY3Mg
bGF5ZXJzCisJaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQwMzc2CisK
KyAgICAgICAgQWRkaW5nIGEgaGFuZGxlR2VvbWV0cnlDaGFuZ2UoKSB0byBjb3JyZWN0IHRoaXMg
cHJvYmxlbS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpHcmFwaGljc0xheWVyUXRJbXBsOjpoYW5kbGVHZW9tZXRyeUNoYW5nZSk6CisgICAgICAgIChX
ZWJDb3JlOjpHcmFwaGljc0xheWVyUXRJbXBsOjpyZWNhY2hlKToKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJRdEltcGw6OnBhaW50KToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNz
TGF5ZXJRdEltcGw6OmZsdXNoQ2hhbmdlcyk6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0xh
eWVyUXQ6OnNldENoaWxkcmVuVHJhbnNmb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlv
blF0Ojp1cGRhdGVDdXJyZW50VGltZSk6CisKIDIwMTAtMDYtMDcgIEpvY2VseW4gVHVyY290dGUg
IDxqb2NlbHluLnR1cmNvdHRlQG5va2lhLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTaW1v
biBIYXVzbWFubi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NMYXllclF0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NM
YXllclF0LmNwcAppbmRleCBiZTQ0ZmNhLi5mYzc4NjkyIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKKysrIGIvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCkBAIC0xNjEsNiArMTYxLDE3IEBA
IHB1YmxpYzoKICAgICAvLyBzb21ldGltZXMgd2UgbmVlZCB0byBjYWNoZSB0aGUgY29udGVudHMg
ZXZlbiBgdGhvdWdoIHRoZSBpdGVtIG5lZWRzIHRvIGJlIHVwZGF0ZWQsIGUuZy4gd2hlbiB0aGUg
YmFja2dyb3VuZC1jb2xvciBpcyBjaGFuZ2VkLgogICAgIC8vIFRPRE86IGludmVzdGlnYXRlIGlm
IFFHcmFwaGljc0l0ZW0gY2FjaGluZyBjYW4gYmUgaW1wcm92ZWQgdG8gc3VwcG9ydCB0aGF0IG91
dCBvZiB0aGUgYm94LgogICAgIFFQaXhtYXAgcmVjYWNoZShjb25zdCBRUmVnaW9uJik7CisJdm9p
ZCAgICBoYW5kbGVHZW9tZXRyeUNoYW5nZSgpIHsKKwkJaWYgKCFtX3RyYW5zZm9ybUFuaW1hdGlv
blJ1bm5pbmcpIHsKKwkJCS8vIEkgZG8gdGhpcyBoZXJlIGJlY2F1c2UgaXQgc2VlbXMgUUdyYXBo
aWNzVmlldyBkb2Vzbid0IHNlZW0gdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIHRyYW5zbGF0ZWQg
Ym91bmRpbmcgcmVjdCB3aGVuIHByZXBhcmVHZW9tZXRyeUNoYW5nZSBoYXBwZW5zCisJCQlpZiAo
UUdyYXBoaWNzU2NlbmUgKnMgPSBzY2VuZSgpKSB7CisJCQkJY29uc3QgUVJlY3RGIGcgPSBtYXBS
ZWN0VG9TY2VuZSggYm91bmRpbmdSZWN0KCkgKTsKKwkJCQlzLT51cGRhdGUoIGcgKTsKKwkJCX0K
KwkJfQorCQlwcmVwYXJlR2VvbWV0cnlDaGFuZ2UoKTsKKwl9CisKIAogICAgIC8vIGNhbGxlZCB3
aGVuIHRoZSBjb21wb3NpdG9yIGlzIHJlYWR5IGZvciB1cyB0byBzaG93IHRoZSBjaGFuZ2VzIG9u
IHNjcmVlbgogICAgIC8vIHRoaXMgaXMgY2FsbGVkIGluZGlyZWN0bHkgZnJvbSBDaHJvbWVDbGll
bnRRdDo6c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbgpAQCAtMzMxLDcgKzM0
Miw3IEBAIFFQaXhtYXAgR3JhcGhpY3NMYXllclF0SW1wbDo6cmVjYWNoZShjb25zdCBRUmVnaW9u
JiByZWdpb25Ub1VwZGF0ZSkKICAgICBwYWludGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRl
cjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZU92ZXIpOwogICAgIG1fbGF5ZXItPnBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKGdjLCByZWdpb24uYm91bmRpbmdSZWN0KCkpOwogCi0gICAgbV9iYWNr
aW5nU3RvcmVLZXkgPSBRUGl4bWFwQ2FjaGU6Omluc2VydChwaXhtYXApOyAgICAKKyAgICBtX2Jh
Y2tpbmdTdG9yZUtleSA9IFFQaXhtYXBDYWNoZTo6aW5zZXJ0KHBpeG1hcCk7CiAgICAgcmV0dXJu
IHBpeG1hcDsKIH0KIApAQCAtMzk4LDcgKzQwOSwxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdElt
cGw6OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAgaWYgKCFpbnZlcnNlT2spCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHNldFRyYW5zZm9ybSh0cmFuc2Zvcm0yRCk7CisJaWYoIHRyYW5zZm9ybTJEICE9
IHRyYW5zZm9ybSgpICkgeworCQloYW5kbGVHZW9tZXRyeUNoYW5nZSgpOworCQlzZXRUcmFuc2Zv
cm0odHJhbnNmb3JtMkQpOworCX0KIAogICAgIGNvbnN0IFFMaXN0PFFHcmFwaGljc0l0ZW0qPiBj
aGlsZHJlbiA9IGNoaWxkSXRlbXMoKTsKICAgICBmb3IgKFFMaXN0PFFHcmFwaGljc0l0ZW0qPjo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZHJlbi5iZWdpbigpOyBpdCAhPSBjaGlsZHJlbi5lbmQo
KTsgKytpdCkKQEAgLTUzNywyMCArNTUxLDIzIEBAIHZvaWQgR3JhcGhpY3NMYXllclF0SW1wbDo6
Zmx1c2hDaGFuZ2VzKGJvb2wgcmVjdXJzaXZlLCBib29sIGZvcmNlVXBkYXRlVHJhbnNmb3JtCiAK
ICAgICBpZiAobV9jaGFuZ2VNYXNrICYgU2l6ZUNoYW5nZSkgewogICAgICAgICBpZiAobV9sYXll
ci0+c2l6ZSgpICE9IG1fc3RhdGUuc2l6ZSkgewotICAgICAgICAgICAgcHJlcGFyZUdlb21ldHJ5
Q2hhbmdlKCk7CisJCQloYW5kbGVHZW9tZXRyeUNoYW5nZSgpOwogICAgICAgICAgICAgbV9zaXpl
ID0gUVNpemVGKG1fbGF5ZXItPnNpemUoKS53aWR0aCgpLCBtX2xheWVyLT5zaXplKCkuaGVpZ2h0
KCkpOwogICAgICAgICB9CiAgICAgfQorI2lmIDAKICAgICAvLyBGSVhNRTogdGhpcyBpcyBhIGhh
Y2ssIGR1ZSB0byBhIHByb2JhYmxlIFFHcmFwaGljc1NjZW5lIGJ1ZyB3aGVuIHJhcGlkbHkgbW9k
aWZ5aW5nIHRoZSBwZXJzcGVjdGl2ZQogICAgIC8vIGJ1dCB3aXRob3V0IHRoaXMgbGluZSB3ZSBn
ZXQgZ3JhcGhpYyBhcnRpZmFjdHMKICAgICBpZiAoKG1fY2hhbmdlTWFzayAmIENoaWxkcmVuVHJh
bnNmb3JtQ2hhbmdlKSAmJiBtX3N0YXRlLmNoaWxkcmVuVHJhbnNmb3JtICE9IG1fbGF5ZXItPmNo
aWxkcmVuVHJhbnNmb3JtKCkpCiAgICAgICAgIGlmIChzY2VuZSgpKQogICAgICAgICAgICAgc2Nl
bmUoKS0+dXBkYXRlKCk7CisjZW5kaWYKIAogICAgIGlmIChtX2NoYW5nZU1hc2sgJiAoQ2hpbGRy
ZW5UcmFuc2Zvcm1DaGFuZ2UgfCBQcmVzZXJ2ZXMzRENoYW5nZSB8IFRyYW5zZm9ybUNoYW5nZSB8
IEFuY2hvclBvaW50Q2hhbmdlIHwgU2l6ZUNoYW5nZSB8IEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5n
ZSB8IFBvc2l0aW9uQ2hhbmdlKSkgewogICAgICAgICAvLyBkdWUgdG8gdGhlIGRpZmZlcmVuY2Vz
IGJldHdlZW4gdGhlIHdheSBXZWJDb3JlIGhhbmRsZXMgdHJhbnNmb3JtcyBhbmQgdGhlIHdheSBR
dCBoYW5kbGVzIHRyYW5zZm9ybXMsCiAgICAgICAgIC8vIGFsbCB0aGVzZSBlbGVtZW50cyBhZmZl
Y3QgdGhlIHRyYW5zZm9ybXMgb2YgYWxsIHRoZSBkZXNjZW5kYW50cy4KICAgICAgICAgZm9yY2VV
cGRhdGVUcmFuc2Zvcm0gPSB0cnVlOworCQkvL2hhbmRsZUdlb21ldHJ5Q2hhbmdlKCk7CiAgICAg
fQogCiAgICAgaWYgKG1fY2hhbmdlTWFzayAmIChDb250ZW50Q2hhbmdlIHwgRHJhd3NDb250ZW50
Q2hhbmdlIHwgTWFza0xheWVyQ2hhbmdlKSkgewpAQCAtNTkyLDYgKzYwOSw3IEBAIHZvaWQgR3Jh
cGhpY3NMYXllclF0SW1wbDo6Zmx1c2hDaGFuZ2VzKGJvb2wgcmVjdXJzaXZlLCBib29sIGZvcmNl
VXBkYXRlVHJhbnNmb3JtCiAgICAgaWYgKG1fY2hhbmdlTWFzayAmIENvbnRlbnRzUmVjdENoYW5n
ZSkgewogICAgICAgICBjb25zdCBRUmVjdCByZWN0KG1fbGF5ZXItPmNvbnRlbnRzUmVjdCgpKTsK
ICAgICAgICAgaWYgKG1fc3RhdGUuY29udGVudHNSZWN0ICE9IHJlY3QpIHsKKwkJCS8vaGFuZGxl
R2VvbWV0cnlDaGFuZ2UoKTsKICAgICAgICAgICAgIG1fc3RhdGUuY29udGVudHNSZWN0ID0gcmVj
dDsKICAgICAgICAgICAgIHVwZGF0ZSgpOwogICAgICAgICB9CkBAIC02MDUsNyArNjIzLDcgQEAg
dm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpmbHVzaENoYW5nZXMoYm9vbCByZWN1cnNpdmUsIGJv
b2wgZm9yY2VVcGRhdGVUcmFuc2Zvcm0KICAgICB9CiAKICAgICBpZiAoKG1fY2hhbmdlTWFzayAm
IENvbnRlbnRzT3BhcXVlQ2hhbmdlKSAmJiBtX3N0YXRlLmNvbnRlbnRzT3BhcXVlICE9IG1fbGF5
ZXItPmNvbnRlbnRzT3BhcXVlKCkpCi0gICAgICAgIHByZXBhcmVHZW9tZXRyeUNoYW5nZSgpOwor
ICAgICAgICBoYW5kbGVHZW9tZXRyeUNoYW5nZSgpOwogCiAjaWZuZGVmIFFUX05PX0dSQVBISUNT
RUZGRUNUCiAgICAgaWYgKG1fbWFza0VmZmVjdCkKQEAgLTY1NCw3ICs2NzIsNyBAQCBhZnRlckxh
eWVyQ2hhbmdlczoKICAgICAgICAgdXBkYXRlVHJhbnNmb3JtKCk7CiAKICAgICBpZiAoIXJlY3Vy
c2l2ZSkKLSAgICAgICAgcmV0dXJuOyAgICAKKyAgICAgICAgcmV0dXJuOwogCiAgICAgUUxpc3Q8
UUdyYXBoaWNzSXRlbSo+IGNoaWxkcmVuID0gY2hpbGRJdGVtcygpOwogICAgIGlmIChtX3N0YXRl
Lm1hc2tMYXllcikKQEAgLTkyOCw3ICs5NDYsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0
Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKICAgICAgICAgICAgIG1faW1wbC0+bV9wZW5k
aW5nQ29udGVudC5waXhtYXAgPSAqcHhtOwogICAgICAgICAgICAgbV9pbXBsLT5tX3BlbmRpbmdD
b250ZW50LmNvbnRlbnRUeXBlID0gR3JhcGhpY3NMYXllclF0SW1wbDo6UGl4bWFwQ29udGVudFR5
cGU7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gICAgICAgIAorICAgICAgICB9CiAg
ICAgfQogICAgIG1faW1wbC0+bV9wZW5kaW5nQ29udGVudC5waXhtYXAgPSBRUGl4bWFwKCk7CiB9
CkBAIC0xMjUxLDEwICsxMjY5LDEyIEBAIHB1YmxpYzoKICAgICB7CiAgICAgICAgIHFyZWFsIG9w
YWNpdHkgPSBxQm91bmQocXJlYWwoMCksIGZyb21WYWx1ZSArICh0b1ZhbHVlLWZyb21WYWx1ZSkq
cHJvZ3Jlc3MsIHFyZWFsKDEpKTsKIAorI2lmIDEKICAgICAgICAgLy8gRklYTUU6IHRoaXMgaXMg
YSBoYWNrLCBkdWUgdG8gYSBwcm9iYWJsZSBRR3JhcGhpY3NTY2VuZSBidWcuCiAgICAgICAgIC8v
IFdpdGhvdXQgdGhpcyB0aGUgb3BhY2l0eSBjaGFuZ2UgZG9lc24ndCBhbHdheXMgaGF2ZSBpbW1l
ZGlhdGUgZWZmZWN0LgogICAgICAgICBpZiAobV9sYXllci5kYXRhKCktPnNjZW5lKCkgJiYgIW1f
bGF5ZXIuZGF0YSgpLT5vcGFjaXR5KCkgJiYgb3BhY2l0eSkKICAgICAgICAgICAgIG1fbGF5ZXIu
ZGF0YSgpLT5zY2VuZSgpLT51cGRhdGUoKTsKKyNlbmRpZgogCiAgICAgICAgIG1fbGF5ZXIuZGF0
YSgpLT5tX2xheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkpOwogICAgICAgICAvLyBXZSBmb3JjZSB0
aGUgYWN0dWFsIG9wYWNpdHkgY2hhbmdlLCBvdGhlcndpc2UgaXQgd291bGQgYmUgaWdub3JlZCBi
ZWNhdXNlIG9mIHRoZSBhbmltYXRpb24uCi0tIAoxLjcuMQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58555</attachid>
            <date>2010-06-12 10:20:24 -0700</date>
            <delta_ts>2010-06-15 11:58:37 -0700</delta_ts>
            <desc>Proposed patch with proper coding style</desc>
            <filename>bug-40376.patch</filename>
            <type>text/plain</type>
            <size>6558</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">RnJvbSBiMTc3ZTYxMTkxNzMzYTRjODBkNjA5MzZhOWNkZjM4MjY5ZmE3YzZjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW0gTWFnbnVzb24gPHNtYWdudXNvbkBuZXRmbGl4LmNvbT4K
RGF0ZTogRnJpLCAxMSBKdW4gMjAxMCAyMzozMzozMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtR
dF0gU29tZXRpbWVzIEkgc2VlIHBpeGVsIGR1c3Qgd2hlbiB0aGUgdHJhbnNmb3JtIGlzIGNoYW5n
aW5nIHJhcGlkbHkgd2l0aCBRdCBncmFwaGljcyBsYXllcnMKIGJ1ZyAtIDQwMzc2CgotLS0KIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjAgKysr
KysrKysrKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQu
Y3BwIHwgICAzMyArKysrKysrKysrKysrKysrKystLS0tCiAyIGZpbGVzIGNoYW5nZWQsIDQ3IGlu
c2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZDlkNzM5Li5jNDYxOTliIDEwMDY0NAotLS0g
YS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIz
IEBACisyMDEwLTA2LTA5ICBTYW0gTWFnbnVzb24gIDxzbWFnbnVzb25AbmV0ZmxpeC5jb20+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW1F0XSBTb21l
dGltZXMgSSBzZWUgcGl4ZWwgZHVzdCB3aGVuIHRoZSB0cmFuc2Zvcm0gaXMgY2hhbmdpbmcKKyAg
ICAgICAgcmFwaWRseSB3aXRoIFF0IGdyYXBoaWNzIGxheWVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NDAzNzYKKworICAgICAgICBBZGRpbmcgYSBo
YW5kbGVHZW9tZXRyeUNoYW5nZSgpIHRvIGNvcnJlY3QgdGhpcyBwcm9ibGVtLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NMYXllclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJRdElt
cGw6OmhhbmRsZUdlb21ldHJ5Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJRdEltcGw6OnJlY2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclF0SW1w
bDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclF0SW1wbDo6Zmx1c2hD
aGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJRdDo6c2V0Q2hpbGRyZW5U
cmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uUXQ6OnVwZGF0ZUN1cnJlbnRU
aW1lKToKKwogMjAxMC0wNi0wNyAgSm9jZWx5biBUdXJjb3R0ZSAgPGpvY2VseW4udHVyY290dGVA
bm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVyUXQuY3BwCmluZGV4IGJl
NDRmY2EuLjAyOGRiZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NMYXllclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dy
YXBoaWNzTGF5ZXJRdC5jcHAKQEAgLTE2MSw2ICsxNjEsMTggQEAgcHVibGljOgogICAgIC8vIHNv
bWV0aW1lcyB3ZSBuZWVkIHRvIGNhY2hlIHRoZSBjb250ZW50cyBldmVuIGB0aG91Z2ggdGhlIGl0
ZW0gbmVlZHMgdG8gYmUgdXBkYXRlZCwgZS5nLiB3aGVuIHRoZSBiYWNrZ3JvdW5kLWNvbG9yIGlz
IGNoYW5nZWQuCiAgICAgLy8gVE9ETzogaW52ZXN0aWdhdGUgaWYgUUdyYXBoaWNzSXRlbSBjYWNo
aW5nIGNhbiBiZSBpbXByb3ZlZCB0byBzdXBwb3J0IHRoYXQgb3V0IG9mIHRoZSBib3guCiAgICAg
UVBpeG1hcCByZWNhY2hlKGNvbnN0IFFSZWdpb24mKTsKKyAgICB2b2lkICAgIGhhbmRsZUdlb21l
dHJ5Q2hhbmdlKCkKKyAgICB7CisgICAgICAgIGlmICghbV90cmFuc2Zvcm1BbmltYXRpb25SdW5u
aW5nKSB7CisgICAgICAgICAgICAvLyBJIGRvIHRoaXMgaGVyZSBiZWNhdXNlIGl0IHNlZW1zIFFH
cmFwaGljc1ZpZXcgZG9lc24ndCBzZWVtIHRvIHRha2UgaW50byBhY2NvdW50IHRoZSB0cmFuc2xh
dGVkIGJvdW5kaW5nIHJlY3Qgd2hlbiBwcmVwYXJlR2VvbWV0cnlDaGFuZ2UgaGFwcGVucworICAg
ICAgICAgICAgaWYgKFFHcmFwaGljc1NjZW5lICpzID0gc2NlbmUoKSkgeworICAgICAgICAgICAg
ICAgIGNvbnN0IFFSZWN0RiBnID0gbWFwUmVjdFRvU2NlbmUoYm91bmRpbmdSZWN0KCkpOworICAg
ICAgICAgICAgICAgIHMtPnVwZGF0ZShnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
ICAgICBwcmVwYXJlR2VvbWV0cnlDaGFuZ2UoKTsKKyAgICB9CisKIAogICAgIC8vIGNhbGxlZCB3
aGVuIHRoZSBjb21wb3NpdG9yIGlzIHJlYWR5IGZvciB1cyB0byBzaG93IHRoZSBjaGFuZ2VzIG9u
IHNjcmVlbgogICAgIC8vIHRoaXMgaXMgY2FsbGVkIGluZGlyZWN0bHkgZnJvbSBDaHJvbWVDbGll
bnRRdDo6c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbgpAQCAtMzMxLDcgKzM0
Myw3IEBAIFFQaXhtYXAgR3JhcGhpY3NMYXllclF0SW1wbDo6cmVjYWNoZShjb25zdCBRUmVnaW9u
JiByZWdpb25Ub1VwZGF0ZSkKICAgICBwYWludGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRl
cjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZU92ZXIpOwogICAgIG1fbGF5ZXItPnBhaW50R3JhcGhp
Y3NMYXllckNvbnRlbnRzKGdjLCByZWdpb24uYm91bmRpbmdSZWN0KCkpOwogCi0gICAgbV9iYWNr
aW5nU3RvcmVLZXkgPSBRUGl4bWFwQ2FjaGU6Omluc2VydChwaXhtYXApOyAgICAKKyAgICBtX2Jh
Y2tpbmdTdG9yZUtleSA9IFFQaXhtYXBDYWNoZTo6aW5zZXJ0KHBpeG1hcCk7CiAgICAgcmV0dXJu
IHBpeG1hcDsKIH0KIApAQCAtMzk4LDcgKzQxMCwxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdElt
cGw6OnVwZGF0ZVRyYW5zZm9ybSgpCiAgICAgaWYgKCFpbnZlcnNlT2spCiAgICAgICAgIHJldHVy
bjsKIAotICAgIHNldFRyYW5zZm9ybSh0cmFuc2Zvcm0yRCk7CisgICAgICAgIGlmICggdHJhbnNm
b3JtMkQgIT0gdHJhbnNmb3JtKCkgKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlR2VvbWV0cnlD
aGFuZ2UoKTsKKyAgICAgICAgICAgICAgICBzZXRUcmFuc2Zvcm0odHJhbnNmb3JtMkQpOworICAg
ICAgICB9CiAKICAgICBjb25zdCBRTGlzdDxRR3JhcGhpY3NJdGVtKj4gY2hpbGRyZW4gPSBjaGls
ZEl0ZW1zKCk7CiAgICAgZm9yIChRTGlzdDxRR3JhcGhpY3NJdGVtKj46OmNvbnN0X2l0ZXJhdG9y
IGl0ID0gY2hpbGRyZW4uYmVnaW4oKTsgaXQgIT0gY2hpbGRyZW4uZW5kKCk7ICsraXQpCkBAIC01
MzcsMjAgKzU1MiwyMyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdEltcGw6OmZsdXNoQ2hhbmdlcyhi
b29sIHJlY3Vyc2l2ZSwgYm9vbCBmb3JjZVVwZGF0ZVRyYW5zZm9ybQogCiAgICAgaWYgKG1fY2hh
bmdlTWFzayAmIFNpemVDaGFuZ2UpIHsKICAgICAgICAgaWYgKG1fbGF5ZXItPnNpemUoKSAhPSBt
X3N0YXRlLnNpemUpIHsKLSAgICAgICAgICAgIHByZXBhcmVHZW9tZXRyeUNoYW5nZSgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgaGFuZGxlR2VvbWV0cnlDaGFuZ2UoKTsKICAgICAgICAgICAg
IG1fc2l6ZSA9IFFTaXplRihtX2xheWVyLT5zaXplKCkud2lkdGgoKSwgbV9sYXllci0+c2l6ZSgp
LmhlaWdodCgpKTsKICAgICAgICAgfQogICAgIH0KKyNpZiAwCiAgICAgLy8gRklYTUU6IHRoaXMg
aXMgYSBoYWNrLCBkdWUgdG8gYSBwcm9iYWJsZSBRR3JhcGhpY3NTY2VuZSBidWcgd2hlbiByYXBp
ZGx5IG1vZGlmeWluZyB0aGUgcGVyc3BlY3RpdmUKICAgICAvLyBidXQgd2l0aG91dCB0aGlzIGxp
bmUgd2UgZ2V0IGdyYXBoaWMgYXJ0aWZhY3RzCiAgICAgaWYgKChtX2NoYW5nZU1hc2sgJiBDaGls
ZHJlblRyYW5zZm9ybUNoYW5nZSkgJiYgbV9zdGF0ZS5jaGlsZHJlblRyYW5zZm9ybSAhPSBtX2xh
eWVyLT5jaGlsZHJlblRyYW5zZm9ybSgpKQogICAgICAgICBpZiAoc2NlbmUoKSkKICAgICAgICAg
ICAgIHNjZW5lKCktPnVwZGF0ZSgpOworI2VuZGlmCiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYg
KENoaWxkcmVuVHJhbnNmb3JtQ2hhbmdlIHwgUHJlc2VydmVzM0RDaGFuZ2UgfCBUcmFuc2Zvcm1D
aGFuZ2UgfCBBbmNob3JQb2ludENoYW5nZSB8IFNpemVDaGFuZ2UgfCBCYWNrZmFjZVZpc2liaWxp
dHlDaGFuZ2UgfCBQb3NpdGlvbkNoYW5nZSkpIHsKICAgICAgICAgLy8gZHVlIHRvIHRoZSBkaWZm
ZXJlbmNlcyBiZXR3ZWVuIHRoZSB3YXkgV2ViQ29yZSBoYW5kbGVzIHRyYW5zZm9ybXMgYW5kIHRo
ZSB3YXkgUXQgaGFuZGxlcyB0cmFuc2Zvcm1zLAogICAgICAgICAvLyBhbGwgdGhlc2UgZWxlbWVu
dHMgYWZmZWN0IHRoZSB0cmFuc2Zvcm1zIG9mIGFsbCB0aGUgZGVzY2VuZGFudHMuCiAgICAgICAg
IGZvcmNlVXBkYXRlVHJhbnNmb3JtID0gdHJ1ZTsKKyAgICAgICAgLy8gaGFuZGxlR2VvbWV0cnlD
aGFuZ2UoKTsKICAgICB9CiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYgKENvbnRlbnRDaGFuZ2Ug
fCBEcmF3c0NvbnRlbnRDaGFuZ2UgfCBNYXNrTGF5ZXJDaGFuZ2UpKSB7CkBAIC01OTIsNiArNjEw
LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpmbHVzaENoYW5nZXMoYm9vbCByZWN1cnNp
dmUsIGJvb2wgZm9yY2VVcGRhdGVUcmFuc2Zvcm0KICAgICBpZiAobV9jaGFuZ2VNYXNrICYgQ29u
dGVudHNSZWN0Q2hhbmdlKSB7CiAgICAgICAgIGNvbnN0IFFSZWN0IHJlY3QobV9sYXllci0+Y29u
dGVudHNSZWN0KCkpOwogICAgICAgICBpZiAobV9zdGF0ZS5jb250ZW50c1JlY3QgIT0gcmVjdCkg
eworICAgICAgICAgICAgLy8gaGFuZGxlR2VvbWV0cnlDaGFuZ2UoKTsKICAgICAgICAgICAgIG1f
c3RhdGUuY29udGVudHNSZWN0ID0gcmVjdDsKICAgICAgICAgICAgIHVwZGF0ZSgpOwogICAgICAg
ICB9CkBAIC02MDUsNyArNjI0LDcgQEAgdm9pZCBHcmFwaGljc0xheWVyUXRJbXBsOjpmbHVzaENo
YW5nZXMoYm9vbCByZWN1cnNpdmUsIGJvb2wgZm9yY2VVcGRhdGVUcmFuc2Zvcm0KICAgICB9CiAK
ICAgICBpZiAoKG1fY2hhbmdlTWFzayAmIENvbnRlbnRzT3BhcXVlQ2hhbmdlKSAmJiBtX3N0YXRl
LmNvbnRlbnRzT3BhcXVlICE9IG1fbGF5ZXItPmNvbnRlbnRzT3BhcXVlKCkpCi0gICAgICAgIHBy
ZXBhcmVHZW9tZXRyeUNoYW5nZSgpOworICAgICAgICBoYW5kbGVHZW9tZXRyeUNoYW5nZSgpOwog
CiAjaWZuZGVmIFFUX05PX0dSQVBISUNTRUZGRUNUCiAgICAgaWYgKG1fbWFza0VmZmVjdCkKQEAg
LTY1NCw3ICs2NzMsNyBAQCBhZnRlckxheWVyQ2hhbmdlczoKICAgICAgICAgdXBkYXRlVHJhbnNm
b3JtKCk7CiAKICAgICBpZiAoIXJlY3Vyc2l2ZSkKLSAgICAgICAgcmV0dXJuOyAgICAKKyAgICAg
ICAgcmV0dXJuOwogCiAgICAgUUxpc3Q8UUdyYXBoaWNzSXRlbSo+IGNoaWxkcmVuID0gY2hpbGRJ
dGVtcygpOwogICAgIGlmIChtX3N0YXRlLm1hc2tMYXllcikKQEAgLTkyOCw3ICs5NDcsNyBAQCB2
b2lkIEdyYXBoaWNzTGF5ZXJRdDo6c2V0Q29udGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKICAg
ICAgICAgICAgIG1faW1wbC0+bV9wZW5kaW5nQ29udGVudC5waXhtYXAgPSAqcHhtOwogICAgICAg
ICAgICAgbV9pbXBsLT5tX3BlbmRpbmdDb250ZW50LmNvbnRlbnRUeXBlID0gR3JhcGhpY3NMYXll
clF0SW1wbDo6UGl4bWFwQ29udGVudFR5cGU7CiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAg
IH0gICAgICAgIAorICAgICAgICB9CiAgICAgfQogICAgIG1faW1wbC0+bV9wZW5kaW5nQ29udGVu
dC5waXhtYXAgPSBRUGl4bWFwKCk7CiB9CkBAIC0xMjUxLDEwICsxMjcwLDEyIEBAIHB1YmxpYzoK
ICAgICB7CiAgICAgICAgIHFyZWFsIG9wYWNpdHkgPSBxQm91bmQocXJlYWwoMCksIGZyb21WYWx1
ZSArICh0b1ZhbHVlLWZyb21WYWx1ZSkqcHJvZ3Jlc3MsIHFyZWFsKDEpKTsKIAorI2lmIDEKICAg
ICAgICAgLy8gRklYTUU6IHRoaXMgaXMgYSBoYWNrLCBkdWUgdG8gYSBwcm9iYWJsZSBRR3JhcGhp
Y3NTY2VuZSBidWcuCiAgICAgICAgIC8vIFdpdGhvdXQgdGhpcyB0aGUgb3BhY2l0eSBjaGFuZ2Ug
ZG9lc24ndCBhbHdheXMgaGF2ZSBpbW1lZGlhdGUgZWZmZWN0LgogICAgICAgICBpZiAobV9sYXll
ci5kYXRhKCktPnNjZW5lKCkgJiYgIW1fbGF5ZXIuZGF0YSgpLT5vcGFjaXR5KCkgJiYgb3BhY2l0
eSkKICAgICAgICAgICAgIG1fbGF5ZXIuZGF0YSgpLT5zY2VuZSgpLT51cGRhdGUoKTsKKyNlbmRp
ZgogCiAgICAgICAgIG1fbGF5ZXIuZGF0YSgpLT5tX2xheWVyLT5zZXRPcGFjaXR5KG9wYWNpdHkp
OwogICAgICAgICAvLyBXZSBmb3JjZSB0aGUgYWN0dWFsIG9wYWNpdHkgY2hhbmdlLCBvdGhlcndp
c2UgaXQgd291bGQgYmUgaWdub3JlZCBiZWNhdXNlIG9mIHRoZSBhbmltYXRpb24uCi0tIAoxLjcu
MQoK
</data>
<flag name="review"
          id="44907"
          type_id="1"
          status="-"
          setter="jedrzej.nowacki"
    />
    <flag name="commit-queue"
          id="45204"
          type_id="3"
          status="-"
          setter="jedrzej.nowacki"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58802</attachid>
            <date>2010-06-15 11:58:37 -0700</date>
            <delta_ts>2010-06-22 16:08:49 -0700</delta_ts>
            <desc>Proposed patch with proper coding style and commented on the test case in the changelog</desc>
            <filename>bug-40376.patch</filename>
            <type>text/plain</type>
            <size>7489</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">RnJvbSA1ODMxNmJmNmI5MWE5YzRhYTRiMTI3YmU0N2YyOWY3YmYwMmE2MTk3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW0gTWFnbnVzb24gPHNtYWdudXNvbkBuZXRmbGl4LmNvbT4K
RGF0ZTogRnJpLCAxMSBKdW4gMjAxMCAyMzozMzozMyAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtR
dF0gU29tZXRpbWVzIEkgc2VlIHBpeGVsIGR1c3Qgd2hlbiB0aGUgdHJhbnNmb3JtIGlzIGNoYW5n
aW5nIHJhcGlkbHkgd2l0aCBRdCBncmFwaGljcyBsYXllcnMKCmJ1ZyAtIDQwMzc2Ci0tLQogV2Vi
Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyNCArKysr
KysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNw
cCB8ICAgNDIgKysrKysrKysrKysrKystLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA1MSBpbnNl
cnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IGUwNDcyOWQuLjIxODU2NmIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcg
QEAKKzIwMTAtMDYtMDkgIFNhbSBNYWdudXNvbiAgPHNtYWdudXNvbkBuZXRmbGl4LmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIFNvbWV0
aW1lcyBJIHNlZSBwaXhlbCBkdXN0IHdoZW4gdGhlIHRyYW5zZm9ybSBpcyBjaGFuZ2luZworICAg
ICAgICByYXBpZGx5IHdpdGggUXQgZ3JhcGhpY3MgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3NgorCisgICAgICAgIEFkZGluZyBhIGhh
bmRsZUdlb21ldHJ5Q2hhbmdlKCkgdG8gY29ycmVjdCB0aGlzIHByb2JsZW0uCisKKyAgICAgICAg
Tm8gbmV3IHRlc3RzOiB0aGlzIGlzIGFuIG9wdGltaXphdGlvbi4KKyAgICAgICAgV2ViS2l0U2l0
ZS9ibG9nLWZpbGVzL3BlcnNwZWN0aXZlLWJ5LWV4YW1wbGUuaHRtbAorICAgICAgICBUaGUgcHJl
dmlvdXMgd29yayBhcm91bmQgKHdoZXJlIHRoZSB3aG9sZSBzY2VuZSB3YXMgdXBkYXRlZCkgd291
bGQKKyAgICAgICAgcmVuZGVyIHRvbyBtdWNoLCB0aGlzIHdvcmtzIGFyb3VuZCBhIFFHcmFwaGlj
c1ZpZXcgYnVnIGJ1dCBwYWludHMKKyAgICAgICAgb25seSB0aGUgdHJhbnNmb3JtZWQgcmVjdGFu
Z2xlIG9mIHRoZSB2aWV3IGluIHF1ZXN0aW9uLgorCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJRdEltcGw6OmhhbmRsZUdlb21ldHJ5Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBo
aWNzTGF5ZXJRdEltcGw6OnJlY2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXll
clF0SW1wbDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NMYXllclF0SW1wbDo6
Zmx1c2hDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXJRdDo6c2V0Q2hp
bGRyZW5UcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uUXQ6OnVwZGF0ZUN1
cnJlbnRUaW1lKToKKwogMjAxMC0wNi0xMyAgTm9hbSBSb3NlbnRoYWwgIDxub2FtLnJvc2VudGhh
bEBub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAgYi9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKaW5kZXggYWQy
ZWM5Yy4uMWMzMzUzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9H
cmFwaGljc0xheWVyUXQuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3Jh
cGhpY3NMYXllclF0LmNwcApAQCAtMTYxLDYgKzE2MSwxOCBAQCBwdWJsaWM6CiAgICAgLy8gc29t
ZXRpbWVzIHdlIG5lZWQgdG8gY2FjaGUgdGhlIGNvbnRlbnRzIGV2ZW4gYHRob3VnaCB0aGUgaXRl
bSBuZWVkcyB0byBiZSB1cGRhdGVkLCBlLmcuIHdoZW4gdGhlIGJhY2tncm91bmQtY29sb3IgaXMg
Y2hhbmdlZC4KICAgICAvLyBUT0RPOiBpbnZlc3RpZ2F0ZSBpZiBRR3JhcGhpY3NJdGVtIGNhY2hp
bmcgY2FuIGJlIGltcHJvdmVkIHRvIHN1cHBvcnQgdGhhdCBvdXQgb2YgdGhlIGJveC4KICAgICBR
UGl4bWFwIHJlY2FjaGUoY29uc3QgUVJlZ2lvbiYpOworICAgIHZvaWQgICAgaGFuZGxlR2VvbWV0
cnlDaGFuZ2UoKQorICAgIHsKKyAgICAgICAgaWYgKCFtX3RyYW5zZm9ybUFuaW1hdGlvblJ1bm5p
bmcpIHsKKyAgICAgICAgICAgIC8vIEkgZG8gdGhpcyBoZXJlIGJlY2F1c2UgaXQgc2VlbXMgUUdy
YXBoaWNzVmlldyBkb2Vzbid0IHNlZW0gdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlIHRyYW5zbGF0
ZWQgYm91bmRpbmcgcmVjdCB3aGVuIHByZXBhcmVHZW9tZXRyeUNoYW5nZSBoYXBwZW5zCisgICAg
ICAgICAgICBpZiAoUUdyYXBoaWNzU2NlbmUqIHMgPSBzY2VuZSgpKSB7CisgICAgICAgICAgICAg
ICAgY29uc3QgUVJlY3RGIGcgPSBtYXBSZWN0VG9TY2VuZShib3VuZGluZ1JlY3QoKSk7CisgICAg
ICAgICAgICAgICAgcy0+dXBkYXRlKGcpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
ICAgIHByZXBhcmVHZW9tZXRyeUNoYW5nZSgpOworICAgIH0KKwogCiAgICAgLy8gY2FsbGVkIHdo
ZW4gdGhlIGNvbXBvc2l0b3IgaXMgcmVhZHkgZm9yIHVzIHRvIHNob3cgdGhlIGNoYW5nZXMgb24g
c2NyZWVuCiAgICAgLy8gdGhpcyBpcyBjYWxsZWQgaW5kaXJlY3RseSBmcm9tIENocm9tZUNsaWVu
dFF0OjpzZXROZWVkc09uZVNob3REcmF3aW5nU3luY2hyb25pemF0aW9uCkBAIC0zMzIsNyArMzQ0
LDcgQEAgUVBpeG1hcCBHcmFwaGljc0xheWVyUXRJbXBsOjpyZWNhY2hlKGNvbnN0IFFSZWdpb24m
IHJlZ2lvblRvVXBkYXRlKQogICAgIG1fbGF5ZXItPnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRz
KGdjLCByZWdpb24uYm91bmRpbmdSZWN0KCkpOwogICAgIHBhaW50ZXIuZW5kKCk7CiAKLSAgICBt
X2JhY2tpbmdTdG9yZUtleSA9IFFQaXhtYXBDYWNoZTo6aW5zZXJ0KHBpeG1hcCk7ICAgIAorICAg
IG1fYmFja2luZ1N0b3JlS2V5ID0gUVBpeG1hcENhY2hlOjppbnNlcnQocGl4bWFwKTsKICAgICBy
ZXR1cm4gcGl4bWFwOwogfQogCkBAIC0zOTksNyArNDExLDEwIEBAIHZvaWQgR3JhcGhpY3NMYXll
clF0SW1wbDo6dXBkYXRlVHJhbnNmb3JtKCkKICAgICBpZiAoIWludmVyc2VPaykKICAgICAgICAg
cmV0dXJuOwogCi0gICAgc2V0VHJhbnNmb3JtKHRyYW5zZm9ybTJEKTsKKyAgICBpZiAoIHRyYW5z
Zm9ybTJEICE9IHRyYW5zZm9ybSgpICkgeworICAgICAgICBoYW5kbGVHZW9tZXRyeUNoYW5nZSgp
OworICAgICAgICBzZXRUcmFuc2Zvcm0odHJhbnNmb3JtMkQpOworICAgIH0KIAogICAgIGNvbnN0
IFFMaXN0PFFHcmFwaGljc0l0ZW0qPiBjaGlsZHJlbiA9IGNoaWxkSXRlbXMoKTsKICAgICBmb3Ig
KFFMaXN0PFFHcmFwaGljc0l0ZW0qPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZHJlbi5iZWdp
bigpOyBpdCAhPSBjaGlsZHJlbi5lbmQoKTsgKytpdCkKQEAgLTUwOCwxMSArNTIzLDExIEBAIHZv
aWQgR3JhcGhpY3NMYXllclF0SW1wbDo6Zmx1c2hDaGFuZ2VzKGJvb2wgcmVjdXJzaXZlLCBib29s
IGZvcmNlVXBkYXRlVHJhbnNmb3JtCiAgICAgICAgIGNvbnN0IFFTZXQ8UUdyYXBoaWNzSXRlbSo+
IGNoaWxkcmVuVG9SZW1vdmUgPSBjdXJyZW50Q2hpbGRyZW4gLSBuZXdDaGlsZHJlbjsKIAogICAg
ICAgICBmb3IgKFFTZXQ8UUdyYXBoaWNzSXRlbSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IGNoaWxk
cmVuVG9BZGQuYmVnaW4oKTsgaXQgIT0gY2hpbGRyZW5Ub0FkZC5lbmQoKTsgKytpdCkKLSAgICAg
ICAgICAgICBpZiAoUUdyYXBoaWNzSXRlbSogdyA9ICppdCkKKyAgICAgICAgICAgIGlmIChRR3Jh
cGhpY3NJdGVtKiB3ID0gKml0KQogICAgICAgICAgICAgICAgIHctPnNldFBhcmVudEl0ZW0odGhp
cyk7CiAKICAgICAgICAgZm9yIChRU2V0PFFHcmFwaGljc0l0ZW0qPjo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBjaGlsZHJlblRvUmVtb3ZlLmJlZ2luKCk7IGl0ICE9IGNoaWxkcmVuVG9SZW1vdmUuZW5k
KCk7ICsraXQpCi0gICAgICAgICAgICAgaWYgKEdyYXBoaWNzTGF5ZXJRdEltcGwqIHcgPSBxb2Jq
ZWN0X2Nhc3Q8R3JhcGhpY3NMYXllclF0SW1wbCo+KCgqaXQpLT50b0dyYXBoaWNzT2JqZWN0KCkp
KQorICAgICAgICAgICAgaWYgKEdyYXBoaWNzTGF5ZXJRdEltcGwqIHcgPSBxb2JqZWN0X2Nhc3Q8
R3JhcGhpY3NMYXllclF0SW1wbCo+KCgqaXQpLT50b0dyYXBoaWNzT2JqZWN0KCkpKQogICAgICAg
ICAgICAgICAgIHctPnNldFBhcmVudEl0ZW0oMCk7CiAKICAgICAgICAgLy8gY2hpbGRyZW4gYXJl
IG9yZGVyZWQgYnkgei12YWx1ZSwgbGV0IGdyYXBoaWNzLXZpZXcga25vdy4KQEAgLTUzOCwyMCAr
NTUzLDE2IEBAIHZvaWQgR3JhcGhpY3NMYXllclF0SW1wbDo6Zmx1c2hDaGFuZ2VzKGJvb2wgcmVj
dXJzaXZlLCBib29sIGZvcmNlVXBkYXRlVHJhbnNmb3JtCiAKICAgICBpZiAobV9jaGFuZ2VNYXNr
ICYgU2l6ZUNoYW5nZSkgewogICAgICAgICBpZiAobV9sYXllci0+c2l6ZSgpICE9IG1fc3RhdGUu
c2l6ZSkgewotICAgICAgICAgICAgcHJlcGFyZUdlb21ldHJ5Q2hhbmdlKCk7CisgICAgICAgICAg
ICBoYW5kbGVHZW9tZXRyeUNoYW5nZSgpOwogICAgICAgICAgICAgbV9zaXplID0gUVNpemVGKG1f
bGF5ZXItPnNpemUoKS53aWR0aCgpLCBtX2xheWVyLT5zaXplKCkuaGVpZ2h0KCkpOwogICAgICAg
ICB9CiAgICAgfQotICAgIC8vIEZJWE1FOiB0aGlzIGlzIGEgaGFjaywgZHVlIHRvIGEgcHJvYmFi
bGUgUUdyYXBoaWNzU2NlbmUgYnVnIHdoZW4gcmFwaWRseSBtb2RpZnlpbmcgdGhlIHBlcnNwZWN0
aXZlCi0gICAgLy8gYnV0IHdpdGhvdXQgdGhpcyBsaW5lIHdlIGdldCBncmFwaGljIGFydGlmYWN0
cwotICAgIGlmICgobV9jaGFuZ2VNYXNrICYgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UpICYmIG1f
c3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0gIT0gbV9sYXllci0+Y2hpbGRyZW5UcmFuc2Zvcm0oKSkK
LSAgICAgICAgaWYgKHNjZW5lKCkpCi0gICAgICAgICAgICBzY2VuZSgpLT51cGRhdGUoKTsKIAog
ICAgIGlmIChtX2NoYW5nZU1hc2sgJiAoQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UgfCBQcmVzZXJ2
ZXMzRENoYW5nZSB8IFRyYW5zZm9ybUNoYW5nZSB8IEFuY2hvclBvaW50Q2hhbmdlIHwgU2l6ZUNo
YW5nZSB8IEJhY2tmYWNlVmlzaWJpbGl0eUNoYW5nZSB8IFBvc2l0aW9uQ2hhbmdlKSkgewogICAg
ICAgICAvLyBkdWUgdG8gdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdGhlIHdheSBXZWJDb3JlIGhh
bmRsZXMgdHJhbnNmb3JtcyBhbmQgdGhlIHdheSBRdCBoYW5kbGVzIHRyYW5zZm9ybXMsCiAgICAg
ICAgIC8vIGFsbCB0aGVzZSBlbGVtZW50cyBhZmZlY3QgdGhlIHRyYW5zZm9ybXMgb2YgYWxsIHRo
ZSBkZXNjZW5kYW50cy4KICAgICAgICAgZm9yY2VVcGRhdGVUcmFuc2Zvcm0gPSB0cnVlOworICAg
ICAgICAvLyBoYW5kbGVHZW9tZXRyeUNoYW5nZSgpOwogICAgIH0KIAogICAgIGlmIChtX2NoYW5n
ZU1hc2sgJiAoQ29udGVudENoYW5nZSB8IERyYXdzQ29udGVudENoYW5nZSB8IE1hc2tMYXllckNo
YW5nZSkpIHsKQEAgLTU5Myw2ICs2MDQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdEltcGw6OmZs
dXNoQ2hhbmdlcyhib29sIHJlY3Vyc2l2ZSwgYm9vbCBmb3JjZVVwZGF0ZVRyYW5zZm9ybQogICAg
IGlmIChtX2NoYW5nZU1hc2sgJiBDb250ZW50c1JlY3RDaGFuZ2UpIHsKICAgICAgICAgY29uc3Qg
UVJlY3QgcmVjdChtX2xheWVyLT5jb250ZW50c1JlY3QoKSk7CiAgICAgICAgIGlmIChtX3N0YXRl
LmNvbnRlbnRzUmVjdCAhPSByZWN0KSB7CisgICAgICAgICAgICAvLyBoYW5kbGVHZW9tZXRyeUNo
YW5nZSgpOwogICAgICAgICAgICAgbV9zdGF0ZS5jb250ZW50c1JlY3QgPSByZWN0OwogICAgICAg
ICAgICAgdXBkYXRlKCk7CiAgICAgICAgIH0KQEAgLTYwNiw3ICs2MTgsNyBAQCB2b2lkIEdyYXBo
aWNzTGF5ZXJRdEltcGw6OmZsdXNoQ2hhbmdlcyhib29sIHJlY3Vyc2l2ZSwgYm9vbCBmb3JjZVVw
ZGF0ZVRyYW5zZm9ybQogICAgIH0KIAogICAgIGlmICgobV9jaGFuZ2VNYXNrICYgQ29udGVudHNP
cGFxdWVDaGFuZ2UpICYmIG1fc3RhdGUuY29udGVudHNPcGFxdWUgIT0gbV9sYXllci0+Y29udGVu
dHNPcGFxdWUoKSkKLSAgICAgICAgcHJlcGFyZUdlb21ldHJ5Q2hhbmdlKCk7CisgICAgICAgIGhh
bmRsZUdlb21ldHJ5Q2hhbmdlKCk7CiAKICNpZm5kZWYgUVRfTk9fR1JBUEhJQ1NFRkZFQ1QKICAg
ICBpZiAobV9tYXNrRWZmZWN0KQpAQCAtNjU1LDcgKzY2Nyw3IEBAIGFmdGVyTGF5ZXJDaGFuZ2Vz
OgogICAgICAgICB1cGRhdGVUcmFuc2Zvcm0oKTsKIAogICAgIGlmICghcmVjdXJzaXZlKQotICAg
ICAgICByZXR1cm47ICAgIAorICAgICAgICByZXR1cm47CiAKICAgICBRTGlzdDxRR3JhcGhpY3NJ
dGVtKj4gY2hpbGRyZW4gPSBjaGlsZEl0ZW1zKCk7CiAgICAgaWYgKG1fc3RhdGUubWFza0xheWVy
KQpAQCAtNzQ5LDggKzc2MSw4IEBAIHZvaWQgR3JhcGhpY3NMYXllclF0OjphZGRDaGlsZEF0SW5k
ZXgoR3JhcGhpY3NMYXllciogbGF5ZXIsIGludCBpbmRleCkKIC8vIHJlaW1wIGZyb20gR3JhcGhp
Y3NMYXllci5oCiB2b2lkIEdyYXBoaWNzTGF5ZXJRdDo6YWRkQ2hpbGRBYm92ZShHcmFwaGljc0xh
eWVyKiBsYXllciwgR3JhcGhpY3NMYXllciogc2libGluZykKIHsKLSAgICAgR3JhcGhpY3NMYXll
cjo6YWRkQ2hpbGRBYm92ZShsYXllciwgc2libGluZyk7Ci0gICAgIG1faW1wbC0+bm90aWZ5Q2hh
bmdlKEdyYXBoaWNzTGF5ZXJRdEltcGw6OkNoaWxkcmVuQ2hhbmdlKTsKKyAgICBHcmFwaGljc0xh
eWVyOjphZGRDaGlsZEFib3ZlKGxheWVyLCBzaWJsaW5nKTsKKyAgICBtX2ltcGwtPm5vdGlmeUNo
YW5nZShHcmFwaGljc0xheWVyUXRJbXBsOjpDaGlsZHJlbkNoYW5nZSk7CiB9CiAKIC8vIHJlaW1w
IGZyb20gR3JhcGhpY3NMYXllci5oCkBAIC05MjksNyArOTQxLDcgQEAgdm9pZCBHcmFwaGljc0xh
eWVyUXQ6OnNldENvbnRlbnRzVG9JbWFnZShJbWFnZSogaW1hZ2UpCiAgICAgICAgICAgICBtX2lt
cGwtPm1fcGVuZGluZ0NvbnRlbnQucGl4bWFwID0gKnB4bTsKICAgICAgICAgICAgIG1faW1wbC0+
bV9wZW5kaW5nQ29udGVudC5jb250ZW50VHlwZSA9IEdyYXBoaWNzTGF5ZXJRdEltcGw6OlBpeG1h
cENvbnRlbnRUeXBlOwogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9ICAgICAgICAKKyAg
ICAgICAgfQogICAgIH0KICAgICBtX2ltcGwtPm1fcGVuZGluZ0NvbnRlbnQucGl4bWFwID0gUVBp
eG1hcCgpOwogfQotLSAKMS43LjEKCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59431</attachid>
            <date>2010-06-22 16:08:49 -0700</date>
            <delta_ts>2010-08-14 07:32:59 -0700</delta_ts>
            <desc>Rediff against trunk</desc>
            <filename>bug-40376.patch</filename>
            <type>text/plain</type>
            <size>4612</size>
            <attacher name="Sam Magnuson">smagnuso</attacher>
            
              <data encoding="base64">RnJvbSA4Y2QxY2ZhMDRlMGJjNTZhNzZiNDE2MGQxYTliNDVmMWM0NzIxMGMzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW0gTWFnbnVzb24gPHNtYWdudXNvbkBuZXRmbGl4LmNvbT4K
RGF0ZTogTW9uLCAyMSBKdW4gMjAxMCAyMDo1NzoxNiAtMDcwMApTdWJqZWN0OiBbUEFUQ0hdIFtR
dF0gU29tZXRpbWVzIEkgc2VlIHBpeGVsIGR1c3Qgd2hlbiB0aGUgdHJhbnNmb3JtIGlzIGNoYW5n
aW5nIHJhcGlkbHkgd2l0aCBRdCBncmFwaGljcyBsYXllcnMKCmJ1Zy00MDM3NgotLS0KIFdlYkNv
cmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjMgKysrKysr
KysrKysrKysrKysrKwogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xheWVy
UXQuY3BwIHwgICAyNiArKysrKysrKysrKysrKy0tLS0tLS0KIDIgZmlsZXMgY2hhbmdlZCwgNDAg
aW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDY5YjE2NzkuLjA5YjdmNWMgMTAwNjQ0Ci0t
LSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjYgQEAKKzIwMTAtMDYtMDkgIFNhbSBNYWdudXNvbiAgPHNtYWdudXNvbkBuZXRmbGl4LmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbUXRdIFNv
bWV0aW1lcyBJIHNlZSBwaXhlbCBkdXN0IHdoZW4gdGhlIHRyYW5zZm9ybSBpcyBjaGFuZ2luZwor
ICAgICAgICByYXBpZGx5IHdpdGggUXQgZ3JhcGhpY3MgbGF5ZXJzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD00MDM3NgorCisgICAgICAgIEFkZGluZyBh
IGhhbmRsZUdlb21ldHJ5Q2hhbmdlKCkgdG8gY29ycmVjdCB0aGlzIHByb2JsZW0uCisKKyAgICAg
ICAgV2ViS2l0U2l0ZS9ibG9nLWZpbGVzL3BlcnNwZWN0aXZlLWJ5LWV4YW1wbGUuaHRtbAorICAg
ICAgICBUaGUgcHJldmlvdXMgd29yayBhcm91bmQgKHdoZXJlIHRoZSB3aG9sZSBzY2VuZSB3YXMg
dXBkYXRlZCkgd291bGQKKyAgICAgICAgcmVuZGVyIHRvbyBtdWNoLCB0aGlzIHdvcmtzIGFyb3Vu
ZCBhIFFHcmFwaGljc1ZpZXcgYnVnIGJ1dCBwYWludHMKKyAgICAgICAgb25seSB0aGUgdHJhbnNm
b3JtZWQgcmVjdGFuZ2xlIG9mIHRoZSB2aWV3IGluIHF1ZXN0aW9uLgorCisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXJRdEltcGw6OmhhbmRsZUdlb21ldHJ5Q2hhbmdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzTGF5ZXJRdEltcGw6OnJlY2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6
R3JhcGhpY3NMYXllclF0SW1wbDo6cGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NM
YXllclF0SW1wbDo6Zmx1c2hDaGFuZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzTGF5
ZXJRdDo6c2V0Q2hpbGRyZW5UcmFuc2Zvcm0pOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9u
UXQ6OnVwZGF0ZUN1cnJlbnRUaW1lKToKKwogMjAxMC0wNi0yMSAgU2hlcmlmZiBCb3QgIDx3ZWJr
aXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjYxNTg1LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFw
aGljc0xheWVyUXQuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0xh
eWVyUXQuY3BwCmluZGV4IDhlZDBkODkuLmUxZDNhMTQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NMYXllclF0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzTGF5ZXJRdC5jcHAKQEAgLTE2OCw2ICsxNjgsMTcgQEAg
cHVibGljOgogICAgIC8vIG5lZWRzIHRvIGJlIHVwZGF0ZWQsIGUuZy4gd2hlbiB0aGUgYmFja2dy
b3VuZC1jb2xvciBpcyBjaGFuZ2VkLgogICAgIC8vIFRPRE86IGludmVzdGlnYXRlIGlmIFFHcmFw
aGljc0l0ZW0gY2FjaGluZyBjYW4gYmUgaW1wcm92ZWQgdG8gc3VwcG9ydCB0aGF0IG91dCBvZiB0
aGUgYm94LgogICAgIFFQaXhtYXAgcmVjYWNoZShjb25zdCBRUmVnaW9uJik7CisgICAgdm9pZCAg
ICBoYW5kbGVHZW9tZXRyeUNoYW5nZSgpCisgICAgeworICAgICAgICBpZiAoIW1fdHJhbnNmb3Jt
QW5pbWF0aW9uUnVubmluZykgeworICAgICAgICAgICAgLy8gSSBkbyB0aGlzIGhlcmUgYmVjYXVz
ZSBpdCBzZWVtcyBRR3JhcGhpY3NWaWV3IGRvZXNuJ3Qgc2VlbSB0byB0YWtlIGludG8gYWNjb3Vu
dCB0aGUgdHJhbnNsYXRlZCBib3VuZGluZyByZWN0IHdoZW4gcHJlcGFyZUdlb21ldHJ5Q2hhbmdl
IGhhcHBlbnMKKyAgICAgICAgICAgIGlmIChRR3JhcGhpY3NTY2VuZSogcyA9IHNjZW5lKCkpIHsK
KyAgICAgICAgICAgICAgICBjb25zdCBRUmVjdEYgZyA9IG1hcFJlY3RUb1NjZW5lKGJvdW5kaW5n
UmVjdCgpKTsKKyAgICAgICAgICAgICAgICBzLT51cGRhdGUoZyk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgcHJlcGFyZUdlb21ldHJ5Q2hhbmdlKCk7CisgICAgfQogCiAgICAg
Ly8gQ2FsbGVkIHdoZW4gdGhlIGNvbXBvc2l0b3IgaXMgcmVhZHkgZm9yIHVzIHRvIHNob3cgdGhl
IGNoYW5nZXMgb24gc2NyZWVuLgogICAgIC8vIFRoaXMgaXMgY2FsbGVkIGluZGlyZWN0bHkgZnJv
bSBDaHJvbWVDbGllbnRRdDo6c2V0TmVlZHNPbmVTaG90RHJhd2luZ1N5bmNocm9uaXphdGlvbgpA
QCAtNDM5LDcgKzQ1MCwxMCBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdEltcGw6OnVwZGF0ZVRyYW5z
Zm9ybSgpCiAgICAgaWYgKCFpbnZlcnNlT2spCiAgICAgICAgIHJldHVybjsKIAotICAgIHNldFRy
YW5zZm9ybSh0cmFuc2Zvcm0yRCk7CisgICAgaWYgKCB0cmFuc2Zvcm0yRCAhPSB0cmFuc2Zvcm0o
KSApIHsKKyAgICAgICAgaGFuZGxlR2VvbWV0cnlDaGFuZ2UoKTsKKyAgICAgICAgc2V0VHJhbnNm
b3JtKHRyYW5zZm9ybTJEKTsKKyAgICB9CiAKICAgICBjb25zdCBRTGlzdDxRR3JhcGhpY3NJdGVt
Kj4gY2hpbGRyZW4gPSBjaGlsZEl0ZW1zKCk7CiAgICAgUUxpc3Q8UUdyYXBoaWNzSXRlbSo+Ojpj
b25zdF9pdGVyYXRvciBpdDsKQEAgLTU4OCwxNyArNjAyLDExIEBAIHZvaWQgR3JhcGhpY3NMYXll
clF0SW1wbDo6Zmx1c2hDaGFuZ2VzKGJvb2wgcmVjdXJzaXZlLCBib29sIGZvcmNlVXBkYXRlVHJh
bnNmb3JtCiAKICAgICBpZiAobV9jaGFuZ2VNYXNrICYgU2l6ZUNoYW5nZSkgewogICAgICAgICBp
ZiAobV9sYXllci0+c2l6ZSgpICE9IG1fc3RhdGUuc2l6ZSkgewotICAgICAgICAgICAgcHJlcGFy
ZUdlb21ldHJ5Q2hhbmdlKCk7CisgICAgICAgICAgICBoYW5kbGVHZW9tZXRyeUNoYW5nZSgpOwog
ICAgICAgICAgICAgbV9zaXplID0gUVNpemVGKG1fbGF5ZXItPnNpemUoKS53aWR0aCgpLCBtX2xh
eWVyLT5zaXplKCkuaGVpZ2h0KCkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gRklYTUU6
IFRoaXMgaXMgYSBoYWNrLCBkdWUgdG8gYSBwcm9iYWJsZSBRR3JhcGhpY3NTY2VuZSBidWcgd2hl
biByYXBpZGx5IG1vZGlmeWluZyB0aGUgcGVyc3BlY3RpdmUKLSAgICAvLyBidXQgd2l0aG91dCB0
aGlzIGxpbmUgd2UgZ2V0IGdyYXBoaWMgYXJ0aWZhY3RzLgotICAgIGlmICgobV9jaGFuZ2VNYXNr
ICYgQ2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UpICYmIG1fc3RhdGUuY2hpbGRyZW5UcmFuc2Zvcm0g
IT0gbV9sYXllci0+Y2hpbGRyZW5UcmFuc2Zvcm0oKSkKLSAgICAgICAgaWYgKHNjZW5lKCkpCi0g
ICAgICAgICAgICBzY2VuZSgpLT51cGRhdGUoKTsKLQogICAgIGlmIChtX2NoYW5nZU1hc2sgJiAo
Q2hpbGRyZW5UcmFuc2Zvcm1DaGFuZ2UgfCBQcmVzZXJ2ZXMzRENoYW5nZSB8IFRyYW5zZm9ybUNo
YW5nZSB8IEFuY2hvclBvaW50Q2hhbmdlIHwgU2l6ZUNoYW5nZSB8IEJhY2tmYWNlVmlzaWJpbGl0
eUNoYW5nZSB8IFBvc2l0aW9uQ2hhbmdlKSkgewogICAgICAgICAvLyBEdWUgdG8gdGhlIGRpZmZl
cmVuY2VzIGJldHdlZW4gdGhlIHdheSBXZWJDb3JlIGhhbmRsZXMgdHJhbnNmb3JtcyBhbmQgdGhl
IHdheSBRdCBoYW5kbGVzIHRyYW5zZm9ybXMsCiAgICAgICAgIC8vIGFsbCB0aGVzZSBlbGVtZW50
cyBhZmZlY3QgdGhlIHRyYW5zZm9ybXMgb2YgYWxsIHRoZSBkZXNjZW5kYW50cy4KQEAgLTY2Niw3
ICs2NzQsNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJRdEltcGw6OmZsdXNoQ2hhbmdlcyhib29sIHJl
Y3Vyc2l2ZSwgYm9vbCBmb3JjZVVwZGF0ZVRyYW5zZm9ybQogICAgIH0KIAogICAgIGlmICgobV9j
aGFuZ2VNYXNrICYgQ29udGVudHNPcGFxdWVDaGFuZ2UpICYmIG1fc3RhdGUuY29udGVudHNPcGFx
dWUgIT0gbV9sYXllci0+Y29udGVudHNPcGFxdWUoKSkKLSAgICAgICAgcHJlcGFyZUdlb21ldHJ5
Q2hhbmdlKCk7CisgICAgICAgIGhhbmRsZUdlb21ldHJ5Q2hhbmdlKCk7CiAKICNpZm5kZWYgUVRf
Tk9fR1JBUEhJQ1NFRkZFQ1QKICAgICBpZiAobV9tYXNrRWZmZWN0KQotLSAKMS43LjEKCg==
</data>
<flag name="review"
          id="46279"
          type_id="1"
          status="-"
          setter="kenneth"
    />
          </attachment>
      

    </bug>

</bugzilla>