<?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>61557</bug_id>
          
          <creation_ts>2011-05-26 14:05:28 -0700</creation_ts>
          <short_desc>REGRESSION (r84166): recalcStyle for display:inline to display:none transition has complexity N^2 where N is the number of child Text nodes</short_desc>
          <delta_ts>2011-06-18 13:41:25 -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>Layout and Rendering</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>InRadar, Regression</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>60959</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ilya Tikhonovsky">loislo</reporter>
          <assigned_to name="Ilya Tikhonovsky">loislo</assigned_to>
          <cc>eric</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>410813</commentid>
    <comment_count>0</comment_count>
      <attachid>95037</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-05-26 14:05:28 -0700</bug_when>
    <thetext>Created attachment 95037
test. It adds 50 new text nodes and dumps time/(count^2) at each iteration

The regression was introduced at http://trac.webkit.org/changeset/84166

When I change display:inline to display:none then
1) Node::detach() will be called for each child node;
2) repaint will be called for each child node&apos;s renderer for invalidating the affected area;
3) RenderText::clippedOverflowRectForRepaint was changed in the patch. As result parent RenderInline renderer object will be returned instead of RenderBlock in the old code
4) RenderInline::culledInlineVisualOverflowBoundingBox of the parent node&apos;s renderer will be called for each child node
  but it has a cycle over all the child node&apos;s renderers
  RenderInline::culledInlineBoundingBox has the same cycle too.

1&gt;	webkit.dll!WebCore::RenderInline::culledInlineBoundingBox(const WebCore::RenderInline * container=0x0d9ed9bc)  Line 782	C++
2 	webkit.dll!WebCore::RenderInline::culledInlineVisualOverflowBoundingBox()  Line 890 + 0x10 bytes	C++
3 	webkit.dll!WebCore::RenderInline::linesVisualOverflowBoundingBox()  Line 931 + 0xc bytes	C++
4 	webkit.dll!WebCore::RenderInline::clippedOverflowRectForRepaint(WebCore::RenderBoxModelObject * repaintContainer=0x00000000)  Line 967	C++
5 	webkit.dll!WebCore::RenderText::clippedOverflowRectForRepaint(WebCore::RenderBoxModelObject * repaintContainer=0x00000000)  Line 1357 + 0x1a bytes	C++
6 	webkit.dll!WebCore::RenderObject::repaint(bool immediate=false)  Line 1208 + 0x32 bytes	C++
7 	webkit.dll!WebCore::RenderObjectChildList::removeChildNode(WebCore::RenderObject * owner=0x0d9ed9bc, WebCore::RenderObject * oldChild=0x0da64c3c, bool fullRemove=true)  Line 80	C++
8 	webkit.dll!WebCore::RenderObject::removeChild(WebCore::RenderObject * oldChild=0x0da64c3c)  Line 334	C++
9 	webkit.dll!WebCore::RenderObject::remove()  Line 764 + 0x42 bytes	C++
10 	webkit.dll!WebCore::RenderObject::destroy()  Line 2070	C++
11 	webkit.dll!WebCore::RenderText::destroy()  Line 201	C++
12 	webkit.dll!WebCore::Node::detach()  Line 1367 + 0x1d bytes	C++
13 	webkit.dll!WebCore::ContainerNode::detach()  Line 761 + 0x12 bytes	C++
14 	webkit.dll!WebCore::Element::detach()  Line 1026	C++
15 	webkit.dll!WebCore::Element::recalcStyle(WebCore::Node::StyleChange change=NoChange)  Line 1090 + 0x12 bytes	C++


Should I just revert it or add something like 

while (container-&gt;isRenderInline() &amp;&amp; container-&gt;parent())
    container = container-&gt;parent();

into RenderText::clippedOverflowRectForRepaint

Another idea with caching the rect looks much more complex.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411145</commentid>
    <comment_count>1</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-05-26 22:01:41 -0700</bug_when>
    <thetext>&lt;rdar://problem/9513180&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414725</commentid>
    <comment_count>2</comment_count>
      <attachid>95872</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-06-03 01:35:59 -0700</bug_when>
    <thetext>Created attachment 95872
[patch] initial version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414875</commentid>
    <comment_count>3</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-06-03 07:32:43 -0700</bug_when>
    <thetext>I think a simpler fix would be to revet to using the containing block except in the case r84166 was addressing, by stopping at layer boundaries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415017</commentid>
    <comment_count>4</comment_count>
      <attachid>95872</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-06-03 11:17:51 -0700</bug_when>
    <thetext>Comment on attachment 95872
[patch] initial version.

Surely this can be fixed without adding a bit to all RenderObjects.  Do we even have a free bit? I don&apos;t think we do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415807</commentid>
    <comment_count>5</comment_count>
      <attachid>96084</attachid>
    <who name="Ilya Tikhonovsky">loislo</who>
    <bug_when>2011-06-06 06:48:59 -0700</bug_when>
    <thetext>Created attachment 96084
[patch] second version. r84166 was reverted. Special case for relative positioned renderer was added.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417352</commentid>
    <comment_count>6</comment_count>
      <attachid>96084</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-06-08 11:06:52 -0700</bug_when>
    <thetext>Comment on attachment 96084
[patch] second version. r84166 was reverted. Special case for relative positioned renderer was added.

I&apos;m not sure RenderLayer::repaintRect() is reliable. Isn&apos;t that the old cached rect and not necessarily current? I think Dan wanted you to do something more like his patch in the one specific case and then more like the original code otherwise, but I&apos;ll let him comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419220</commentid>
    <comment_count>7</comment_count>
      <attachid>96857</attachid>
    <who name="">mitz</who>
    <bug_when>2011-06-11 10:58:22 -0700</bug_when>
    <thetext>Created attachment 96857
Use the containing block unless it is across a layer boundary

No need to change the test. I confirmed that it still fails with TOT minus r84166, and passes with TOT plus this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419263</commentid>
    <comment_count>8</comment_count>
      <attachid>96857</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-06-11 20:45:21 -0700</bug_when>
    <thetext>Comment on attachment 96857
Use the containing block unless it is across a layer boundary

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

&gt; Source/WebCore/rendering/RenderText.cpp:1361
&gt; +    RenderObject* cb = containingBlock();

I would much prefer a word or phrase to the acronym cb here. If “cb” is a good name, then I suggest:

    RenderObject* containingBlock = this-&gt;containingBlock();

But if there is a better name for the local variable, then all the better.

&gt; Source/WebCore/rendering/RenderText.cpp:1370
&gt; +    // The containing block may be an ancestor of repaintContainer, but we need to do a repaintContainer-relative repaint.
&gt; +    if (repaintContainer &amp;&amp; repaintContainer != cb &amp;&amp; !cb-&gt;isDescendantOf(repaintContainer))
&gt; +            return repaintContainer-&gt;clippedOverflowRectForRepaint(repaintContainer);

Wrong indentation on the body of this if.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419310</commentid>
    <comment_count>9</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-06-12 11:29:03 -0700</bug_when>
    <thetext>Fixed in r88617. &lt;http://trac.webkit.org/changeset/88617&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423243</commentid>
    <comment_count>10</comment_count>
      <attachid>96084</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-18 13:41:25 -0700</bug_when>
    <thetext>Comment on attachment 96084
[patch] second version. r84166 was reverted. Special case for relative positioned renderer was added.

Cleared review? from attachment 96084 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>95037</attachid>
            <date>2011-05-26 14:05:28 -0700</date>
            <delta_ts>2011-05-26 14:05:28 -0700</delta_ts>
            <desc>test. It adds 50 new text nodes and dumps time/(count^2) at each iteration</desc>
            <filename>t.html</filename>
            <type>text/html</type>
            <size>852</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">PHNjcmlwdD4NCg0KY291bnRlciA9IDA7DQpmdW5jdGlvbiBpbml0KCkNCnsNCiAgY29udGFpbmVy
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRhaW5lciIpOw0KICBsb2cgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgibG9nIik7DQogIGZsYWcgPSB0cnVlOw0KICBkID0gbmV3IERhdGUo
KS5nZXRUaW1lKCk7DQogIHNldFRpbWVvdXQodCwgMCk7DQp9DQoNCmZ1bmN0aW9uIHQoKQ0Kew0K
ICBkZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpIC0gZDsNCiAgZCA9IG5ldyBEYXRlKCkuZ2V0VGlt
ZSgpOw0KDQogIGNvbnRhaW5lci5zdHlsZS5jc3NUZXh0ID0gZmxhZyA/ICJkaXNwbGF5Om5vbmUi
IDogImRpc3BsYXk6aW5saW5lIjsNCiAgZmxhZyA9ICFmbGFnOw0KDQogIGZvciAodmFyIGkgPSAw
OyBpIDwgNTA7ICsraSkNCiAgICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
VGV4dE5vZGUoIiB0IiArIGNvdW50ZXIrKykpOw0KICBjb250YWluZXIuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7DQoNCiAgbG9nLmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKA0KICAgIChmbGFnID8gImlubGluZS0+bm9uZSAiIDogIm5vbmUtPmlu
bGluZSAiKSArIGRkIC8gKGNvdW50ZXIgKiBjb3VudGVyIC8gMTAwMDApDQogICkpOw0KICBsb2cu
YXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnIiKSk7DQogIHNldFRpbWVvdXQo
dCwgMCk7DQp9DQo8L3NjcmlwdD4NCg0KPGJvZHkgb25Mb2FkPSJpbml0KCkiPg0KPGRpdiBpZD0i
bG9nIj48L2Rpdj4NCjxzcGFuIGlkPSJjb250YWluZXIiPg0KPC9zcGFuPg0KPC9ib2R5Pg0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95872</attachid>
            <date>2011-06-03 01:35:59 -0700</date>
            <delta_ts>2011-06-06 06:48:59 -0700</delta_ts>
            <desc>[patch] initial version.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>6815</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1YWNmZDU5Li5mYWNjNzU2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDYt
MDIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0IHdhcyBjcmVhdGVkIGZvciBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg1MDAKKyAgICAgICAgQnV0
IHRoZSB0ZXN0IGlzIG5vdCBmYWlsaW5nIHdoZW4gSSByZXZlcnQgdGhlIGZpeCBwYXJ0IG9mIGNo
YW5nZS4KKworICAgICAgICAqIGZhc3QvcmVwYWludC90ZXh0LWluLXJlbGF0aXZlLXBvc2l0aW9u
ZWQtaW5saW5lLmh0bWw6CisKIDIwMTEtMDYtMDIgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC90ZXh0LWluLXJlbGF0aXZlLXBvc2l0aW9uZWQt
aW5saW5lLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC90ZXh0LWluLXJl
bGF0aXZlLXBvc2l0aW9uZWQtaW5saW5lLWV4cGVjdGVkLnR4dAppbmRleCBjMjMzZjA3Li5mN2Vk
YTVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvdGV4dC1pbi1yZWxhdGl2
ZS1wb3NpdGlvbmVkLWlubGluZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9y
ZXBhaW50L3RleHQtaW4tcmVsYXRpdmUtcG9zaXRpb25lZC1pbmxpbmUtZXhwZWN0ZWQudHh0CkBA
IC0zLDYgKzMsNSBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKIGxheWVyIGF0ICgwLDAp
IHNpemUgODAweDYwMAogICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4NjAw
CiAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0Ci0gICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMTAwLDApIHNpemUgNjg0eDEwMAotICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgw
LDApIHNpemUgMTAweDEwMCBbYmdjb2xvcj0jMDA4MDAwXQorbGF5ZXIgYXQgKDgsOCkgc2l6ZSAx
MDB4MTAwCisgIFJlbmRlckJsb2NrIChwb3NpdGlvbmVkKSB7RElWfSBhdCAoOCw4KSBzaXplIDEw
MHgxMDAgW2JnY29sb3I9IzAwODAwMF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVw
YWludC90ZXh0LWluLXJlbGF0aXZlLXBvc2l0aW9uZWQtaW5saW5lLmh0bWwgYi9MYXlvdXRUZXN0
cy9mYXN0L3JlcGFpbnQvdGV4dC1pbi1yZWxhdGl2ZS1wb3NpdGlvbmVkLWlubGluZS5odG1sCmlu
ZGV4IDk0MDkzZjUuLmRhMGRjYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvcmVwYWlu
dC90ZXh0LWluLXJlbGF0aXZlLXBvc2l0aW9uZWQtaW5saW5lLmh0bWwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZXBhaW50L3RleHQtaW4tcmVsYXRpdmUtcG9zaXRpb25lZC1pbmxpbmUuaHRtbApA
QCAtOCw4ICs4LDggQEAKICAgICA8L3NjcmlwdD4KIDwvaGVhZD4KIDxib2R5IG9ubG9hZD0icnVu
UmVwYWludFRlc3QoKSI+Ci0gICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEwMHB4OyBmb250
OiAxMDBweCBhaGVtOyAtd2Via2l0LWZvbnQtc21vb3RoaW5nOiBub25lOyBoZWlnaHQ6IDEwMHB4
OyI+Ci0gICAgICAgIDxzcGFuIGlkPSJ0YXJnZXQiIHN0eWxlPSJwb3NpdGlvbjogcmVsYXRpdmU7
IGxlZnQ6IC0xMDBweDsgY29sb3I6IHJlZDsiPmFiPC9zcGFuPgorICAgIDxkaXYgc3R5bGU9InBv
c2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5k
LWNvbG9yOiBncmVlbjsiPjwvZGl2PgorICAgIDxkaXYgaWQ9InRhcmdldCIgc3R5bGU9Im1hcmdp
bi1sZWZ0OiAxMDBweDsgZm9udDogMTAwcHggYWhlbTsgLXdlYmtpdC1mb250LXNtb290aGluZzog
bm9uZTsgaGVpZ2h0OiAxMDBweDsiPgorICAgICAgICA8c3BhbiBzdHlsZT0icG9zaXRpb246IHJl
bGF0aXZlOyBsZWZ0OiAtMTAwcHg7IGNvbG9yOiByZWQ7Ij5hYjwvc3Bhbj4KICAgICA8L2Rpdj4K
LSAgICA8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7IGJhY2tncm91bmQt
Y29sb3I6IGdyZWVuOyBtYXJnaW4tdG9wOiAtMTAwcHg7Ij48L2Rpdj4KIDwvYm9keT4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBiYTk5MzlmLi43MDMwNzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIw
MTEtMDYtMDIgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFJFR1JFU1NJT04gKHI4
NDE2Nik6IHJlY2FsY1N0eWxlIGZvciBkaXNwbGF5OmlubGluZSB0byBkaXNwbGF5Om5vbmUKKyAg
ICAgICAgdHJhbnNpdGlvbiBoYXMgY29tcGxleGl0eSBOXjIgd2hlcmUgTiBpcyB0aGUgbnVtYmVy
IG9mIGNoaWxkIFRleHQgbm9kZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTYxNTU3CisKKyAgICAgICAgVGhlIHByb2JsZW06CisgICAgICAgIDApIGNs
aXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50IHdpbGwgYmUgY2FsbGVkIGZyb20gUmVuZGVyT2Jq
ZWN0OjpyZXBhaW50IGZvciB0aGUgZWFjaCBub2RlJ3MgcmVuZGVyZXIgd2hlbiB3ZSBjaGFuZ2Ug
ZGlzcGxheTppbmxpbmUgdG8gZGlzcGxheTpub25lCisgICAgICAgIDEpIFJlbmRlclRleHQgb2Jq
ZWN0IHVzZXMgcGFyZW50J3MgY2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQgZnVuY3Rpb24u
CisgICAgICAgIDIpIFJlbmRlcklubGluZTo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQg
ZnVuY3Rpb24gaGFzIE8oTikgY29tcGxleGl0eSB3aGVyZSBOIGlzIHRoZSBudW1iZXIgb2YgY2hp
bGRyZW4uCisKKyAgICAgICAgSWRlYTogV2hlbiB3ZSByZXBhaW50IGEgdGV4dCBub2RlIHdlIGNh
biBqdXN0IHJlcGFpbnQgaXQncyBwYXJlbnQgYW5kIG1hcmsgaXQgYXMgcmVwYWludGVkLgorICAg
ICAgICBUaGUgc2Vjb25kIHRleHQgcmVuZGVyZXIgd2lsbCBza2lwIHJlcGFpbnQgaWYgdGhlIHBh
cmVudCBoYXMgYmVlbiByZXBhaW50ZWQgZWFybGllci4KKyAgICAgICAgV2hlbiBhbGwgdGhlIGNo
aWxkcmVuIGFyZSBkZWxldGVkIHJlcGFpbnQgY2FsbCBmb3IgdGhlIHBhcmVudCB3aWxsIGNsZWFy
IHRoZSBmbGFnLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJPYmplY3Q6OlJlbmRlck9iamVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpSZW5kZXJPYmplY3Q6OnJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJP
YmplY3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludCk6CisKIDIw
MTEtMDYtMDIgIEhheWF0byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9i
amVjdC5jcHAKaW5kZXggYjkzNTUxYi4uZTdmOWIzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTIwNSw2ICsyMDUsNyBAQCBSZW5kZXJPYmplY3Q6OlJl
bmRlck9iamVjdChOb2RlKiBub2RlKQogICAgICwgbV9oYXNUcmFuc2Zvcm0oZmFsc2UpCiAgICAg
LCBtX2hhc1JlZmxlY3Rpb24oZmFsc2UpCiAgICAgLCBtX2hhc092ZXJyaWRlU2l6ZShmYWxzZSkK
KyAgICAsIG1fcmVwYWludGVkQnlDaGlsZChmYWxzZSkKICAgICAsIG1faGFzQ291bnRlck5vZGVN
YXAoZmFsc2UpCiAgICAgLCBtX2V2ZXJIYWRMYXlvdXQoZmFsc2UpCiAgICAgLCBtX2NoaWxkcmVu
SW5saW5lKGZhbHNlKQpAQCAtMTIwNCw2ICsxMjA1LDIwIEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojpy
ZXBhaW50KGJvb2wgaW1tZWRpYXRlKQogICAgIGlmICh2aWV3LT5wcmludGluZygpKQogICAgICAg
ICByZXR1cm47IC8vIERvbid0IHJlcGFpbnQgaWYgd2UncmUgcHJpbnRpbmcuCiAKKyAgICAvLyBX
ZSByZXBhaW50IHRoZSBwYXJlbnQgYW5kIG1hcmsgcGFyZW50IHJlbmRlcmVyIGFzIHJlcGFpbnRl
ZAorICAgIC8vIGlmICd0aGlzJyBpcyBhIFJlbmRlclRleHQgb2JqZWN0IGFuZCBpdCdzIHBhcmVu
dCBpcyBSZW5kZXJJbmxpbmUgb2JqZWN0LgorICAgIC8vIFJlYXNvbjogUmVuZGVyVGV4dDo6Y2xp
cHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQgdXNlcyBwYXJlbnQncyBmdW5jdGlvbiBidXQKKyAg
ICAvLyBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50IGhhcyBjb21w
bGV4aXR5IE8oTikKKyAgICAvLyBpdCBpcyB0b28gY29zdGx5IGZvciB1cyB3aGVuIHdlIGFyZSBk
ZXRhY2hpbmcgYWxsIGl0J3MgY2hpbGRyZW4gb25lIGJ5IG9uZS4KKyAgICBtX3JlcGFpbnRlZEJ5
Q2hpbGQgPSBmYWxzZTsKKyAgICBpZiAoaXNUZXh0KCkgJiYgcGFyZW50KCkgJiYgcGFyZW50KCkt
PmlzUmVuZGVySW5saW5lKCkpIHsKKyAgICAgICAgaWYgKCFwYXJlbnQoKS0+bV9yZXBhaW50ZWRC
eUNoaWxkKSB7CisgICAgICAgICAgICBwYXJlbnQoKS0+cmVwYWludChpbW1lZGlhdGUpOworICAg
ICAgICAgICAgcGFyZW50KCktPm1fcmVwYWludGVkQnlDaGlsZCA9IHRydWU7CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBh
aW50Q29udGFpbmVyID0gY29udGFpbmVyRm9yUmVwYWludCgpOwogICAgIHJlcGFpbnRVc2luZ0Nv
bnRhaW5lcihyZXBhaW50Q29udGFpbmVyID8gcmVwYWludENvbnRhaW5lciA6IHZpZXcsIGNsaXBw
ZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpLCBpbW1lZGlhdGUpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5oCmluZGV4IDIxMjBjY2EuLjM4
N2VmNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmgKQEAgLTg4MSw2
ICs4ODEsOCBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2hhc092ZXJyaWRlU2l6ZSAgICAgICAg
ICAgOiAxOwogICAgIAorICAgIGJvb2wgbV9yZXBhaW50ZWRCeUNoaWxkICAgICAgICAgIDogMTsK
KwogcHVibGljOgogICAgIGJvb2wgbV9oYXNDb3VudGVyTm9kZU1hcCAgICAgICAgIDogMTsKICAg
ICBib29sIG1fZXZlckhhZExheW91dCAgICAgICAgICAgICA6IDE7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGV4dC5jcHAKaW5kZXggNjUzYWEzMi4uMDE0NjI3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcApAQCAtMTM1OCwxMyArMTM1OCw3IEBAIEludFJl
Y3QgUmVuZGVyVGV4dDo6bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5nQm94KCkgY29uc3QKIAog
SW50UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJC
b3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikKIHsKLSAgICBib29sIHJlcGFpbnRDb250
YWluZXJTa2lwcGVkOwotICAgIFJlbmRlck9iamVjdCogY29udGFpbmVyID0gdGhpcy0+Y29udGFp
bmVyKHJlcGFpbnRDb250YWluZXIsICZyZXBhaW50Q29udGFpbmVyU2tpcHBlZCk7Ci0gICAgLy8g
VGhlIGNvbnRhaW5lciBtYXkgYmUgYW4gYW5jZXN0b3Igb2YgcmVwYWludENvbnRhaW5lciwgYnV0
IHdlIG5lZWQgdG8gZG8gYSByZXBhaW50Q29udGFpbmVyLXJlbGF0aXZlIHJlcGFpbnQuCi0gICAg
aWYgKHJlcGFpbnRDb250YWluZXJTa2lwcGVkKQotICAgICAgICByZXR1cm4gcmVwYWludENvbnRh
aW5lci0+Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7Ci0K
LSAgICByZXR1cm4gY29udGFpbmVyLT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBh
aW50Q29udGFpbmVyKTsKKyAgICByZXR1cm4gcGFyZW50KCktPmNsaXBwZWRPdmVyZmxvd1JlY3RG
b3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIpOwogfQogCiBJbnRSZWN0IFJlbmRlclRleHQ6OnNl
bGVjdGlvblJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFp
bmVyLCBib29sIGNsaXBUb1Zpc2libGVDb250ZW50KQo=
</data>
<flag name="review"
          id="89454"
          type_id="1"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96084</attachid>
            <date>2011-06-06 06:48:59 -0700</date>
            <delta_ts>2011-06-18 13:41:24 -0700</delta_ts>
            <desc>[patch] second version. r84166 was reverted. Special case for relative positioned renderer was added.</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>5127</size>
            <attacher name="Ilya Tikhonovsky">loislo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMmEwMTllLi4yYzc3MDY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTEtMDYt
MDUgIElseWEgVGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEl0IHdhcyBjcmVhdGVkIGZvciBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTg1MDAKKyAgICAgICAgQnV0
IHRoZSB0ZXN0IGlzIG5vdCBmYWlsaW5nIHdoZW4gSSByZXZlcnQgdGhlIGZpeCBwYXJ0IG9mIGNo
YW5nZS4KKworICAgICAgICAqIGZhc3QvcmVwYWludC90ZXh0LWluLXJlbGF0aXZlLXBvc2l0aW9u
ZWQtaW5saW5lLmh0bWw6CisKIDIwMTEtMDYtMDYgIFpzb2x0IEZlaMOpciAgPGg0OTAyNjdAc3R1
ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBDc2FiYSBPc3p0cm9nb27DoWMu
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvdGV4dC1pbi1yZWxhdGl2ZS1w
b3NpdGlvbmVkLWlubGluZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQv
dGV4dC1pbi1yZWxhdGl2ZS1wb3NpdGlvbmVkLWlubGluZS1leHBlY3RlZC50eHQKaW5kZXggYzIz
M2YwNy4uZjdlZGE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3RleHQt
aW4tcmVsYXRpdmUtcG9zaXRpb25lZC1pbmxpbmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVwYWludC90ZXh0LWluLXJlbGF0aXZlLXBvc2l0aW9uZWQtaW5saW5lLWV4cGVj
dGVkLnR4dApAQCAtMyw2ICszLDUgQEAgbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiBsYXll
ciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNp
emUgODAweDYwMAogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAot
ICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDEwMCwwKSBzaXplIDY4NHgxMDAKLSAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICBSZW5kZXJCbG9jayB7
RElWfSBhdCAoMCwwKSBzaXplIDEwMHgxMDAgW2JnY29sb3I9IzAwODAwMF0KK2xheWVyIGF0ICg4
LDgpIHNpemUgMTAweDEwMAorICBSZW5kZXJCbG9jayAocG9zaXRpb25lZCkge0RJVn0gYXQgKDgs
OCkgc2l6ZSAxMDB4MTAwIFtiZ2NvbG9yPSMwMDgwMDBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlcGFpbnQvdGV4dC1pbi1yZWxhdGl2ZS1wb3NpdGlvbmVkLWlubGluZS5odG1sIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L3RleHQtaW4tcmVsYXRpdmUtcG9zaXRpb25lZC1pbmxp
bmUuaHRtbAppbmRleCA5NDA5M2Y1Li43NDhmYjA1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L3JlcGFpbnQvdGV4dC1pbi1yZWxhdGl2ZS1wb3NpdGlvbmVkLWlubGluZS5odG1sCisrKyBi
L0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC90ZXh0LWluLXJlbGF0aXZlLXBvc2l0aW9uZWQtaW5s
aW5lLmh0bWwKQEAgLTgsOCArOCwxMCBAQAogICAgIDwvc2NyaXB0PgogPC9oZWFkPgogPGJvZHkg
b25sb2FkPSJydW5SZXBhaW50VGVzdCgpIj4KLSAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDog
MTAwcHg7IGZvbnQ6IDEwMHB4IGFoZW07IC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IG5vbmU7IGhl
aWdodDogMTAwcHg7Ij4KLSAgICAgICAgPHNwYW4gaWQ9InRhcmdldCIgc3R5bGU9InBvc2l0aW9u
OiByZWxhdGl2ZTsgbGVmdDogLTEwMHB4OyBjb2xvcjogcmVkOyI+YWI8L3NwYW4+CisgICAgPGRp
diBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB3aWR0aDogMTAwcHg7IGhlaWdodDogMTAwcHg7
IGJhY2tncm91bmQtY29sb3I6IGdyZWVuOyI+PC9kaXY+CisgICAgPGRpdiBpZD0idGFyZ2V0IiBz
dHlsZT0ibWFyZ2luLWxlZnQ6IDEwMHB4OyBmb250OiAxMDBweCBhaGVtOyAtd2Via2l0LWZvbnQt
c21vb3RoaW5nOiBub25lOyBoZWlnaHQ6IDEwMHB4OyI+CisgICAgICAgIDxzcGFuIHN0eWxlPSJw
b3NpdGlvbjogcmVsYXRpdmU7IGxlZnQ6IC0xMDBweDsgY29sb3I6IHJlZDsiPgorICAgICAgICAg
IDxzcGFuPmFiPC9zcGFuPgorICAgICAgICA8L3NwYW4+CiAgICAgPC9kaXY+Ci0gICAgPGRpdiBz
dHlsZT0id2lkdGg6IDEwMHB4OyBoZWlnaHQ6IDEwMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVl
bjsgbWFyZ2luLXRvcDogLTEwMHB4OyI+PC9kaXY+CiA8L2JvZHk+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGI3
ZWNjOS4uNGFiNjI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDExLTA2LTA1ICBJ
bHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OIChyODQxNjYpOiByZWNh
bGNTdHlsZSBmb3IgZGlzcGxheTppbmxpbmUgdG8gZGlzcGxheTpub25lCisgICAgICAgIHRyYW5z
aXRpb24gaGFzIGNvbXBsZXhpdHkgTl4yIHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZiBjaGlsZCBU
ZXh0IG5vZGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02MTU1NworCisgICAgICAgIFRoZSBwcm9ibGVtOgorICAgICAgICAwKSBjbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludCB3aWxsIGJlIGNhbGxlZCBmcm9tIFJlbmRlck9iamVjdDo6cmVwYWlu
dCBmb3IgdGhlIGVhY2ggbm9kZSdzIHJlbmRlcmVyIHdoZW4gd2UgY2hhbmdlIGRpc3BsYXk6aW5s
aW5lIHRvIGRpc3BsYXk6bm9uZQorICAgICAgICAxKSBSZW5kZXJUZXh0IG9iamVjdCB1c2VzIHBh
cmVudCdzIGNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50IGZ1bmN0aW9uLgorICAgICAgICAy
KSBSZW5kZXJJbmxpbmU6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50IGZ1bmN0aW9uIGhh
cyBPKE4pIGNvbXBsZXhpdHkgd2hlcmUgTiBpcyB0aGUgbnVtYmVyIG9mIGNoaWxkcmVuLgorCisg
ICAgICAgIFJldmVydCBvcmlnaW5hbCBjaGFuZ2Ugcjg0MTY2LiBXZSBjYW4gdXNlIHRoZSByZWN0
IG9mIGVuY2xvc2luZyBsYXllciBpZiB0aGUgcmVuZGVyZXIgaXMgcmVsYXRpdmUgcG9zaXRpb25l
ZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZWRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOiByZXZlcnRlZCBh
bmQKKyAgICAgICAgaWYgKHN0eWxlKCktPnBvc2l0aW9uKCkgPT0gUmVsYXRpdmVQb3NpdGlvbikg
Y2FzZSB3YXMgYWRkZWQuCisKIDIwMTEtMDYtMDQgIERvbWluaWMgQ29vbmV5ICA8ZG9taW5pY2NA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAppbmRleCA2NTNhYTMyLi5kOGY3NzZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCkBAIC0xMzU4LDEzICsx
MzU4LDE2IEBAIEludFJlY3QgUmVuZGVyVGV4dDo6bGluZXNWaXN1YWxPdmVyZmxvd0JvdW5kaW5n
Qm94KCkgY29uc3QKIAogSW50UmVjdCBSZW5kZXJUZXh0OjpjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcikKIHsKLSAgICBi
b29sIHJlcGFpbnRDb250YWluZXJTa2lwcGVkOwotICAgIFJlbmRlck9iamVjdCogY29udGFpbmVy
ID0gdGhpcy0+Y29udGFpbmVyKHJlcGFpbnRDb250YWluZXIsICZyZXBhaW50Q29udGFpbmVyU2tp
cHBlZCk7Ci0gICAgLy8gVGhlIGNvbnRhaW5lciBtYXkgYmUgYW4gYW5jZXN0b3Igb2YgcmVwYWlu
dENvbnRhaW5lciwgYnV0IHdlIG5lZWQgdG8gZG8gYSByZXBhaW50Q29udGFpbmVyLXJlbGF0aXZl
IHJlcGFpbnQuCi0gICAgaWYgKHJlcGFpbnRDb250YWluZXJTa2lwcGVkKQotICAgICAgICByZXR1
cm4gcmVwYWludENvbnRhaW5lci0+Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWlu
dENvbnRhaW5lcik7Ci0KLSAgICByZXR1cm4gY29udGFpbmVyLT5jbGlwcGVkT3ZlcmZsb3dSZWN0
Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKKyAgICBpZiAoc3R5bGUoKS0+cG9zaXRpb24o
KSA9PSBSZWxhdGl2ZVBvc2l0aW9uKQorICAgICAgICByZXR1cm4gZW5jbG9zaW5nTGF5ZXIoKS0+
cmVwYWludFJlY3QoKTsKKworICAgIFJlbmRlck9iamVjdCogY2IgPSBjb250YWluaW5nQmxvY2so
KTsKKyAgICAvLyBUaGUgY29udGFpbmluZyBibG9jayBtYXkgYmUgYW4gYW5jZXN0b3Igb2YgcmVw
YWludENvbnRhaW5lciwgYnV0IHdlIG5lZWQgdG8gZG8gYSByZXBhaW50Q29udGFpbmVyLXJlbGF0
aXZlIHJlcGFpbnQuCisgICAgaWYgKHJlcGFpbnRDb250YWluZXIgJiYgcmVwYWludENvbnRhaW5l
ciAhPSBjYikgeworICAgICAgICBpZiAoIWNiLT5pc0Rlc2NlbmRhbnRPZihyZXBhaW50Q29udGFp
bmVyKSkKKyAgICAgICAgICAgIHJldHVybiByZXBhaW50Q29udGFpbmVyLT5jbGlwcGVkT3ZlcmZs
b3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKKyAgICB9CisgICAgcmV0dXJuIGNi
LT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKIH0KIAog
SW50UmVjdCBSZW5kZXJUZXh0OjpzZWxlY3Rpb25SZWN0Rm9yUmVwYWludChSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96857</attachid>
            <date>2011-06-11 10:58:22 -0700</date>
            <delta_ts>2011-06-11 20:45:21 -0700</delta_ts>
            <desc>Use the containing block unless it is across a layer boundary</desc>
            <filename>61557_r1.diff</filename>
            <type>text/plain</type>
            <size>2452</size>
            <attacher>mitz</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4NjAyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMDYtMTEgIERhbiBCZXJu
c3RlaW4gIDxtaXR6QGFwcGxlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBSRUdSRVNTSU9OIChyODQxNjYpOiByZWNhbGNTdHlsZSBmb3IgZGlz
cGxheTppbmxpbmUgdG8gZGlzcGxheTpub25lIHRyYW5zaXRpb24gaGFzIGNvbXBsZXhpdHkgTl4y
IHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZiBjaGlsZCBUZXh0IG5vZGVzCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MTU1NworCisgICAgICAgIFJlcGxh
Y2VkIHRoZSBmaXggZm9yIGJ1ZyA1ODUwMCB3aXRoIGEgcmVmaW5lZCB2ZXJzaW9uLgorCisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
VGV4dDo6Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQpOiBVc2UgdGhlIGNvbnRhaW5pbmcg
YmxvY2sgdW5sZXNzIGl0IGlzCisgICAgICAgIGFjcm9zcyBhIGxheWVyIGJvdW5kYXJ5LgorCiAy
MDExLTA2LTExICBEaW1pdHJpIEdsYXprb3YgIDxkZ2xhemtvdkBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjg4NTY1LgpJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJUZXh0LmNwcAkocmV2aXNpb24gODgzMTgpCisrKyBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEzNTgsMTMg
KzEzNTgsMTggQEAgSW50UmVjdCBSZW5kZXJUZXh0OjpsaW5lc1Zpc3VhbE92ZXJmbG93QgogCiBJ
bnRSZWN0IFJlbmRlclRleHQ6OmNsaXBwZWRPdmVyZmxvd1JlY3RGb3JSZXBhaW50KFJlbmRlckJv
eE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyKQogewotICAgIGJvb2wgcmVwYWludENvbnRh
aW5lclNraXBwZWQ7Ci0gICAgUmVuZGVyT2JqZWN0KiBjb250YWluZXIgPSB0aGlzLT5jb250YWlu
ZXIocmVwYWludENvbnRhaW5lciwgJnJlcGFpbnRDb250YWluZXJTa2lwcGVkKTsKLSAgICAvLyBU
aGUgY29udGFpbmVyIG1heSBiZSBhbiBhbmNlc3RvciBvZiByZXBhaW50Q29udGFpbmVyLCBidXQg
d2UgbmVlZCB0byBkbyBhIHJlcGFpbnRDb250YWluZXItcmVsYXRpdmUgcmVwYWludC4KLSAgICBp
ZiAocmVwYWludENvbnRhaW5lclNraXBwZWQpCi0gICAgICAgIHJldHVybiByZXBhaW50Q29udGFp
bmVyLT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKKyAg
ICBSZW5kZXJPYmplY3QqIGNiID0gY29udGFpbmluZ0Jsb2NrKCk7CiAKLSAgICByZXR1cm4gY29u
dGFpbmVyLT5jbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsK
KyAgICAvLyBEbyBub3QgY3Jvc3Mgc2VsZi1wYWludGluZyBsYXllciBib3VuZGFyaWVzLgorICAg
IFJlbmRlck9iamVjdCogZW5jbG9zaW5nTGF5ZXJSZW5kZXJlciA9IGVuY2xvc2luZ0xheWVyKCkt
PnJlbmRlcmVyKCk7CisgICAgaWYgKGVuY2xvc2luZ0xheWVyUmVuZGVyZXIgIT0gY2IgJiYgIWNi
LT5pc0Rlc2NlbmRhbnRPZihlbmNsb3NpbmdMYXllclJlbmRlcmVyKSkKKyAgICAgICAgY2IgPSBl
bmNsb3NpbmdMYXllclJlbmRlcmVyOworCisgICAgLy8gVGhlIGNvbnRhaW5pbmcgYmxvY2sgbWF5
IGJlIGFuIGFuY2VzdG9yIG9mIHJlcGFpbnRDb250YWluZXIsIGJ1dCB3ZSBuZWVkIHRvIGRvIGEg
cmVwYWludENvbnRhaW5lci1yZWxhdGl2ZSByZXBhaW50LgorICAgIGlmIChyZXBhaW50Q29udGFp
bmVyICYmIHJlcGFpbnRDb250YWluZXIgIT0gY2IgJiYgIWNiLT5pc0Rlc2NlbmRhbnRPZihyZXBh
aW50Q29udGFpbmVyKSkKKyAgICAgICAgICAgIHJldHVybiByZXBhaW50Q29udGFpbmVyLT5jbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyKTsKKworICAgIHJldHVy
biBjYi0+Y2xpcHBlZE92ZXJmbG93UmVjdEZvclJlcGFpbnQocmVwYWludENvbnRhaW5lcik7CiB9
CiAKIEludFJlY3QgUmVuZGVyVGV4dDo6c2VsZWN0aW9uUmVjdEZvclJlcGFpbnQoUmVuZGVyQm94
TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQp
Cg==
</data>
<flag name="review"
          id="90644"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>