<?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>98336</bug_id>
          
          <creation_ts>2012-10-03 18:06:29 -0700</creation_ts>
          <short_desc>Make RenderObject destruction during detach a top-down operation</short_desc>
          <delta_ts>2012-10-16 18:26:46 -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>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>92697</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>esprehn</cc>
    
    <cc>hyatt</cc>
    
    <cc>inferno</cc>
    
    <cc>ojan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>734282</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-03 18:06:29 -0700</bug_when>
    <thetext>Currently, detach destroys the render tree in a bottom-up approach (see ContainerNode::detach).

While this is correct and will detach / destroy all renderers in the DOM subtree, it causes some extra-work to be done:
* RenderBlock tries to merge anonymous renderer when we remove a child (ie for each renderer in the subtree).
* RenderObject tries to clean any parent anonymous wrappers.
* We partially clean / destroy a tree level as the DOM doesn&apos;t know about the anonymous renderers. The leftover anonymous children will be cleaned up when their parent is destroyed.

Most of these operations only apply to the root of the subtree-to-detach, not on any renderer inside the subtree. The main issue is that detach is a DOM-driven operation and it doesn&apos;t know enough of the render tree structure to make some good decisions.

Also important is that the current logic in RenderObject already does top-down cleaning but the DOM logic overrides this behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734286</commentid>
    <comment_count>1</comment_count>
      <attachid>167015</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-03 18:24:03 -0700</bug_when>
    <thetext>Created attachment 167015
Proposed change: change detach() to do a top-down destruction.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734304</commentid>
    <comment_count>2</comment_count>
      <attachid>167015</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-10-03 19:05:13 -0700</bug_when>
    <thetext>Comment on attachment 167015
Proposed change: change detach() to do a top-down destruction.

Do you actually see any performance benefit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734330</commentid>
    <comment_count>3</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-03 20:32:26 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 167015 [details])
&gt; Do you actually see any performance benefit?

I don&apos;t expect - nor have I seen - any performance improvement from this change. However it is a preparation for the real change(s) as the top-down approach is more tailored to them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742615</commentid>
    <comment_count>4</comment_count>
      <attachid>167015</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2012-10-15 17:23:05 -0700</bug_when>
    <thetext>Comment on attachment 167015
Proposed change: change detach() to do a top-down destruction.

LGTM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>742757</commentid>
    <comment_count>5</comment_count>
      <attachid>167015</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-15 20:35:06 -0700</bug_when>
    <thetext>Comment on attachment 167015
Proposed change: change detach() to do a top-down destruction.

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

&gt; Source/WebCore/dom/Node.cpp:1322
&gt; +    ASSERT(!renderer());
&gt; +#ifndef NDEBUG
&gt; +    for (Node* n = this; n; n = n-&gt;traverseNextNode(this))
&gt; +        ASSERT(!renderer());
&gt; +#endif

The inner assertion should to say ASSERT(!n-&gt;renderer()), otherwise this just asserts the same thing over and over again.

The outer assertion would look nicer inside the #ifndef. But also, it’s redundant with the first assertion in the loop, although I suppose it might be more OK to repeat the assertion just to distinguish that case if it does fail.

We need to be careful about the exponential complexity here. This is going to make detach super-slow in debug builds, maybe unbearably so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743215</commentid>
    <comment_count>6</comment_count>
      <attachid>167015</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-16 09:40:39 -0700</bug_when>
    <thetext>Comment on attachment 167015
Proposed change: change detach() to do a top-down destruction.

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

&gt;&gt; Source/WebCore/dom/Node.cpp:1322
&gt;&gt; +#endif
&gt; 
&gt; The inner assertion should to say ASSERT(!n-&gt;renderer()), otherwise this just asserts the same thing over and over again.
&gt; 
&gt; The outer assertion would look nicer inside the #ifndef. But also, it’s redundant with the first assertion in the loop, although I suppose it might be more OK to repeat the assertion just to distinguish that case if it does fail.
&gt; 
&gt; We need to be careful about the exponential complexity here. This is going to make detach super-slow in debug builds, maybe unbearably so.

Good catch about the exponential complexity, it should be possible to avoid it and only walk the tree an extra time. Let me do more testing and come up with a better solution.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743546</commentid>
    <comment_count>7</comment_count>
      <attachid>169024</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2012-10-16 14:10:54 -0700</bug_when>
    <thetext>Created attachment 169024
Updated patch for landing: Fixed the ASSERT, avoid the bad complexity and tweaked it to account for flow-thread.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743766</commentid>
    <comment_count>8</comment_count>
      <attachid>169024</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-16 18:26:42 -0700</bug_when>
    <thetext>Comment on attachment 169024
Updated patch for landing: Fixed the ASSERT, avoid the bad complexity and tweaked it to account for flow-thread.

Clearing flags on attachment: 169024

Committed r131539: &lt;http://trac.webkit.org/changeset/131539&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>743768</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-16 18:26:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167015</attachid>
            <date>2012-10-03 18:24:03 -0700</date>
            <delta_ts>2012-10-16 14:10:52 -0700</delta_ts>
            <desc>Proposed change: change detach() to do a top-down destruction.</desc>
            <filename>bug-98336-20121003182314.patch</filename>
            <type>text/plain</type>
            <size>6222</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwMzQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjZiYzg3OGRiOTZmMjZj
OTAxMzFjOTA3ZTVhN2ZhOTM0OTAzNDQyOC4uMWYxYzkwZGIxNTE3MjdjNjMwYzRhMTgyOWMwOGJi
Zjc5MTQxYTEzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDEyLTEwLTAzICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgUmVu
ZGVyT2JqZWN0IGRlc3RydWN0aW9uIGR1cmluZyBkZXRhY2ggYSB0b3AtZG93biBvcGVyYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZGV0YWNoKCkg
aXMgYSBET00tZHJpdmVuIG9wZXJhdGlvbiB0aGF0IGRlc3Ryb3lzIHRoZSByZW5kZXJlcnMgYm90
dG9tLXVwLgorICAgICAgICBXaGlsZSB0aGlzIGlzIGNvcnJlY3QsIGl0IGNhdXNlcyBleHRyYS13
b3JrIHRvIGJlIGRvbmUgKHRyZWUgY2xlYW5pbmcsIC4uLikKKyAgICAgICAgYXMgaXQgZG9lc24n
dCBrbm93IGFib3V0IHRoZSByZW5kZXIgdHJlZSdzIHN0cnVjdHVyZS4KKworICAgICAgICBUaGUg
cmVuZGVyIHRyZWUgb24gdGhlIG90aGVyIHNpZGUgYWxyZWFkeSBzdXBwb3J0cyB0b3AtZG93biBv
cGVyYXRpb25zCisgICAgICAgIGJ1dCBpdCB3YXMgb3ZlcnJpZGVuIGJ5IHRoZSBET00gc2lkZSBv
ZiBkZXRhY2guCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugb25seSBtYWtlcyBDb250YWluZXJOb2Rl
OjpkZXRhY2ggZG8gYSB0b3AtZG93biByZW5kZXIgdHJlZQorICAgICAgICBkZXN0cnVjdGlvbi4g
VGhpcyBpcyBhIHJlcXVpcmVkIHN0ZXAgdG93YXJkcyBkb2luZyBzbWFydGVyIGRlc3RydWN0aW9u
LgorCisgICAgICAgIFJlZmFjdG9yaW5nIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAg
ICAgICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWlu
ZXJOb2RlOjpkZXRhY2gpOgorICAgICAgICBDaGFuZ2VkIHRoZSBtZXRob2QgdG8gZG8gYSB0b3At
ZG93biBkZXN0cnVjdGlvbi4KKworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok5vZGU6OmRldGFjaCk6CisgICAgICAgIEFkZGVkIHRoaXMgQVNTRVJUIHRoYXQgZW5z
dXJlcyB0aGF0IHdlIGhhdmUgcHJvcGVybHkgY2xlYW5lZCB1cCB0aGUKKyAgICAgICAgd2hvbGUg
RE9NIHN1YnRyZWUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKToKKyAgICAgICAg
QXMgd2UgZG9uJ3QgdXBkYXRlIHRoZSBub2RlJ3MgcmVuZGVyZXIgb24gdGhlIERPTSBzaWRlLCBk
byBpdCBoZXJlLgorICAgICAgICBUaGUgdXBzaWRlIGlzIHRoYXQgaXQgZW5zdXJlcyB0aGF0IHdl
IGRvbid0IGxlZnQgYW55IHN0cmF5IHJlbmRlcmVyCisgICAgICAgIGluIHRoZSB0cmVlLgorCisg
ICAgICAgICogcmVuZGVyaW5nL1JlbmRlck9iamVjdENoaWxkTGlzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJPYmplY3RDaGlsZExpc3Q6OmRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKToK
KyAgICAgICAgUmVtb3ZlZCB0aGUgY2FsbHMgdG8gc2V0UmVuZGVyZXIgYXMgdGhleSBhcmUgcmVk
dW5kYW50IHdpdGggd2hhdCB3ZSBkbworICAgICAgICBpbiB3aWxsQmVEZXN0cm95ZWQuCisKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRleHRGcmFnbWVudDo6c2V0VGV4dCk6CisgICAgICAgIFJlbW92ZWQgc29tZSBu
b3cgdW5uZWVkZWQgY29kZSwgcmVwbGFjZWQgYnkgYW4gQVNTRVJULiBUaGlzIGlzIGJlY2F1c2UK
KyAgICAgICAgZGVzdHJveWluZyBtX2ZpcnN0TGV0dGVyIHdvdWxkIGF1dG9tYXRpY2FsbHkgcmVz
ZXQgdGhlIG5vZGUncyByZW5kZXJlcgorICAgICAgICBpbiBkZXN0cm95TGVmdG92ZXJDaGlsZHJl
bi4KKwogMjAxMi0xMC0wMyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzEzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vQ29udGFpbmVyTm9kZS5jcHAKaW5kZXggYjBmNGQ4YTBhZjZkNWEwMTg0YzY0ZDU5YTcx
YzVjYzhlZDNhZDRhZC4uYmU3MzAzOWYyMzkzMmZkNWU5MTJlMjRhZWFjNDhhNTlmNzU1NjcwMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtNzA2LDkgKzcwNiw5IEBAIHZv
aWQgQ29udGFpbmVyTm9kZTo6YXR0YWNoKCkKIAogdm9pZCBDb250YWluZXJOb2RlOjpkZXRhY2go
KQogeworICAgIE5vZGU6OmRldGFjaCgpOwogICAgIGRldGFjaENoaWxkcmVuKCk7CiAgICAgY2xl
YXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKLSAgICBOb2RlOjpkZXRhY2goKTsKIH0KIAogdm9p
ZCBDb250YWluZXJOb2RlOjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5v
ZGUqLCBOb2RlKiwgaW50IGNoaWxkQ291bnREZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Ob2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA4M2Ux
NGI4Mjc3NTQ4OTRkYmNmYmIxNDM0Yzk3MjJmYWY4N2Q2ZjdjLi44Zjg2YTY1ODNjY2Y2ZThlZmIx
YjdjZTY4MjgzYmExOTM1YjkxZWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMzE0LDcgKzEzMTQs
MTIgQEAgdm9pZCBOb2RlOjpkZXRhY2goKQogCiAgICAgaWYgKHJlbmRlcmVyKCkpCiAgICAgICAg
IHJlbmRlcmVyKCktPmRlc3Ryb3lBbmRDbGVhbnVwQW5vbnltb3VzV3JhcHBlcnMoKTsKLSAgICBz
ZXRSZW5kZXJlcigwKTsKKworICAgIEFTU0VSVCghcmVuZGVyZXIoKSk7CisjaWZuZGVmIE5ERUJV
RworICAgIGZvciAoTm9kZSogbiA9IHRoaXM7IG47IG4gPSBuLT50cmF2ZXJzZU5leHROb2RlKHRo
aXMpKQorICAgICAgICBBU1NFUlQoIXJlbmRlcmVyKCkpOworI2VuZGlmCiAKICAgICBEb2N1bWVu
dCogZG9jID0gZG9jdW1lbnQoKTsKICAgICBpZiAoaG92ZXJlZCgpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAppbmRleCAzNmI5ZDEyZjI2YjU5Y2Q2YWNhZTRmMTk2
NzBhMjk4N2NjM2NjODE4Li5lZDQ2YzU2NjI3NDljNzc1YjFiZGY3ZDRhZDE0OGRkZjRkYzdjMTFj
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0LmNwcApAQCAtMjM0OCw2
ICsyMzQ4LDExIEBAIHZvaWQgUmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0cm95ZWQoKQogCiAgICAg
cmVtb3ZlKCk7CiAKKyAgICAvLyBDb250aW51YXRpb24gYW5kIGZpcnN0LWxldHRlciBjYW4gZ2Vu
ZXJhdGUgc2V2ZXJhbCByZW5kZXJlcnMgYXNzb2NpYXRlZCB3aXRoIGEgc2luZ2xlIG5vZGUuCisg
ICAgLy8gV2Ugb25seSB3YW50IHRvIGNsZWFyIHRoZSBub2RlJ3MgcmVuZGVyZXIgaWYgd2UgYXJl
IHRoZSBhc3NvY2lhdGVkIHJlbmRlcmVyLgorICAgIGlmIChub2RlKCkgJiYgbm9kZSgpLT5yZW5k
ZXJlcigpID09IHRoaXMpCisgICAgICAgIG5vZGUoKS0+c2V0UmVuZGVyZXIoMCk7CisKICNpZm5k
ZWYgTkRFQlVHCiAgICAgaWYgKCFkb2N1bWVudEJlaW5nRGVzdHJveWVkKCkgJiYgdmlldygpICYm
IHZpZXcoKS0+aGFzUmVuZGVyTmFtZWRGbG93VGhyZWFkcygpKSB7CiAgICAgICAgIC8vIEFmdGVy
IHJlbW92ZSwgdGhlIG9iamVjdCBhbmQgdGhlIGFzc29jaWF0ZWQgaW5mb3JtYXRpb24gc2hvdWxk
IG5vdCBiZSBpbiBhbnkgZmxvdyB0aHJlYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJPYmplY3RDaGlsZExpc3QuY3BwCmluZGV4IGMzYjRkNDgzMTZlZTc1YjZiMTQ4
YTEzNGM2MTJhNDc0NDA4NDgwNDguLmVjMjI3ZGIyZDdiZjhmODdiMTM1OWRhNjM2YzQ4OWY3OTI4
MDY2MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RD
aGlsZExpc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJPYmplY3RD
aGlsZExpc3QuY3BwCkBAIC01MSwxMyArNTEsMTAgQEAgdm9pZCBSZW5kZXJPYmplY3RDaGlsZExp
c3Q6OmRlc3Ryb3lMZWZ0b3ZlckNoaWxkcmVuKCkKICAgICAgICAgaWYgKGZpcnN0Q2hpbGQoKS0+
aXNMaXN0TWFya2VyKCkgfHwgKGZpcnN0Q2hpbGQoKS0+c3R5bGUoKS0+c3R5bGVUeXBlKCkgPT0g
RklSU1RfTEVUVEVSICYmICFmaXJzdENoaWxkKCktPmlzVGV4dCgpKSkKICAgICAgICAgICAgIGZp
cnN0Q2hpbGQoKS0+cmVtb3ZlKCk7ICAvLyBMaXN0IG1hcmtlcnMgYXJlIG93bmVkIGJ5IHRoZWly
IGVuY2xvc2luZyBsaXN0IGFuZCBzbyBkb24ndCBnZXQgZGVzdHJveWVkIGJ5IHRoaXMgY29udGFp
bmVyLiBTaW1pbGFybHksIGZpcnN0IGxldHRlcnMgYXJlIGRlc3Ryb3llZCBieSB0aGVpciByZW1h
aW5pbmcgdGV4dCBmcmFnbWVudC4KICAgICAgICAgZWxzZSBpZiAoZmlyc3RDaGlsZCgpLT5pc1J1
bkluKCkgJiYgZmlyc3RDaGlsZCgpLT5ub2RlKCkpIHsKLSAgICAgICAgICAgIGZpcnN0Q2hpbGQo
KS0+bm9kZSgpLT5zZXRSZW5kZXJlcigwKTsKICAgICAgICAgICAgIGZpcnN0Q2hpbGQoKS0+bm9k
ZSgpLT5zZXROZWVkc1N0eWxlUmVjYWxjKCk7CiAgICAgICAgICAgICBmaXJzdENoaWxkKCktPmRl
c3Ryb3koKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIERlc3Ryb3kgYW55IGFu
b255bW91cyBjaGlsZHJlbiByZW1haW5pbmcgaW4gdGhlIHJlbmRlciB0cmVlLCBhcyB3ZWxsIGFz
IGltcGxpY2l0IChzaGFkb3cpIERPTSBlbGVtZW50cyBsaWtlIHRob3NlIHVzZWQgaW4gdGhlIGVu
Z2luZS1iYXNlZCB0ZXh0IGZpZWxkcy4KLSAgICAgICAgICAgIGlmIChmaXJzdENoaWxkKCktPm5v
ZGUoKSkKLSAgICAgICAgICAgICAgICBmaXJzdENoaWxkKCktPm5vZGUoKS0+c2V0UmVuZGVyZXIo
MCk7CiAgICAgICAgICAgICBmaXJzdENoaWxkKCktPmRlc3Ryb3koKTsKICAgICAgICAgfQogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAK
aW5kZXggOWY0OTdkMzQ0OGQ0NmM1YWUwZWE4NzQzYzcyNzA1MTczMDRhZmFlOS4uNWQ2ZTE2NWQ2
MGQ0YTg4NjFmMjkyMGJlZWMzOWIyNTE5MmE5ZTM2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlclRleHRGcmFnbWVudC5jcHAKQEAgLTg1LDEwICs4NSw3IEBAIHZvaWQg
UmVuZGVyVGV4dEZyYWdtZW50OjpzZXRUZXh0KFBhc3NSZWZQdHI8U3RyaW5nSW1wbD4gdGV4dCwg
Ym9vbCBmb3JjZSkKICAgICAgICAgQVNTRVJUKCFtX2NvbnRlbnRTdHJpbmcpOwogICAgICAgICBt
X2ZpcnN0TGV0dGVyLT5kZXN0cm95KCk7CiAgICAgICAgIG1fZmlyc3RMZXR0ZXIgPSAwOwotICAg
ICAgICBpZiAoTm9kZSogdCA9IG5vZGUoKSkgewotICAgICAgICAgICAgQVNTRVJUKCF0LT5yZW5k
ZXJlcigpKTsKLSAgICAgICAgICAgIHQtPnNldFJlbmRlcmVyKHRoaXMpOwotICAgICAgICB9Cisg
ICAgICAgIEFTU0VSVCghbm9kZSgpIHx8IG5vZGUoKS0+cmVuZGVyZXIoKSA9PSB0aGlzKTsKICAg
ICB9CiB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169024</attachid>
            <date>2012-10-16 14:10:54 -0700</date>
            <delta_ts>2012-10-16 18:26:42 -0700</delta_ts>
            <desc>Updated patch for landing: Fixed the ASSERT, avoid the bad complexity and tweaked it to account for flow-thread.</desc>
            <filename>bug-98336-20121016140943.patch</filename>
            <type>text/plain</type>
            <size>6721</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMxNDY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzU3Zjk2NDFkYzdjNGRh
YmVkZWJiMjEwZWE0ZTc1ZWU1NTljNmM4Zi4uZjBiM2MwMDUzNTk4MTE2YmMwMGJkY2ZkYzczMzMx
MjI0YmYxMzkyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDEyLTEwLTE2ICBKdWxp
ZW4gQ2hhZmZyYWl4ICA8amNoYWZmcmFpeEB3ZWJraXQub3JnPgorCisgICAgICAgIE1ha2UgUmVu
ZGVyT2JqZWN0IGRlc3RydWN0aW9uIGR1cmluZyBkZXRhY2ggYSB0b3AtZG93biBvcGVyYXRpb24K
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk4MzM2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCisKKyAgICAgICAgZGV0YWNoKCkgaXMg
YSBET00tZHJpdmVuIG9wZXJhdGlvbiB0aGF0IGRlc3Ryb3lzIHRoZSByZW5kZXJlcnMgYm90dG9t
LXVwLgorICAgICAgICBXaGlsZSB0aGlzIGlzIGNvcnJlY3QsIGl0IGNhdXNlcyBleHRyYS13b3Jr
IHRvIGJlIGRvbmUgKHRyZWUgY2xlYW5pbmcsIC4uLikKKyAgICAgICAgYXMgaXQgZG9lc24ndCBr
bm93IGFib3V0IHRoZSByZW5kZXIgdHJlZSdzIHN0cnVjdHVyZS4KKworICAgICAgICBUaGUgcmVu
ZGVyIHRyZWUgb24gdGhlIG90aGVyIHNpZGUgYWxyZWFkeSBzdXBwb3J0cyB0b3AtZG93biBvcGVy
YXRpb25zCisgICAgICAgIGJ1dCBpdCB3YXMgb3ZlcnJpZGVuIGJ5IHRoZSBET00gc2lkZSBvZiBk
ZXRhY2guCisKKyAgICAgICAgVGhpcyBjaGFuZ2Ugb25seSBtYWtlcyBDb250YWluZXJOb2RlOjpk
ZXRhY2ggZG8gYSB0b3AtZG93biByZW5kZXIgdHJlZQorICAgICAgICBkZXN0cnVjdGlvbi4gVGhp
cyBpcyBhIHJlcXVpcmVkIHN0ZXAgdG93YXJkcyBkb2luZyBzbWFydGVyIGRlc3RydWN0aW9uLgor
CisgICAgICAgIFJlZmFjdG9yaW5nIGNvdmVyZWQgYnkgZXhpc3RpbmcgdGVzdHMuCisKKyAgICAg
ICAgKiBkb20vQ29udGFpbmVyTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250YWluZXJO
b2RlOjpkZXRhY2gpOgorICAgICAgICBDaGFuZ2VkIHRoZSBtZXRob2QgdG8gZG8gYSB0b3AtZG93
biBkZXN0cnVjdGlvbi4KKworICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok5vZGU6OmRldGFjaCk6CisgICAgICAgIEFkZGVkIHRoaXMgQVNTRVJUIHRoYXQgZW5zdXJl
cyB0aGF0IHdlIGhhdmUgcHJvcGVybHkgY2xlYW5lZCB1cCB0aGUKKyAgICAgICAgd2hvbGUgRE9N
IHN1YnRyZWUuIFRoZSBvbmx5IGV4Y2VwdGlvbiBpcyBjaGlsZCBjb250ZW50IGJlbG9uZ2luZyB0
byBhCisgICAgICAgIGZsb3ctdGhyZWFkIGFzIHRoZSBjb2RlIHdpbGwgc2h1ZmZsZSB0aGUgcmVu
ZGVyZXJzIHVuZGVyIHRoZSBmbG93LXRocmVhZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyT2JqZWN0Ojp3aWxsQmVEZXN0
cm95ZWQpOgorICAgICAgICBBcyB3ZSBkb24ndCB1cGRhdGUgdGhlIG5vZGUncyByZW5kZXJlciBv
biB0aGUgRE9NIHNpZGUsIGRvIGl0IGhlcmUuCisgICAgICAgIFRoZSB1cHNpZGUgaXMgdGhhdCBp
dCBlbnN1cmVzIHRoYXQgd2UgZG9uJ3QgbGVmdCBhbnkgc3RyYXkgcmVuZGVyZXIKKyAgICAgICAg
aW4gdGhlIHRyZWUuCisKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlck9iamVjdENoaWxkTGlzdDo6ZGVzdHJveUxl
ZnRvdmVyQ2hpbGRyZW4pOgorICAgICAgICBSZW1vdmVkIHRoZSBjYWxscyB0byBzZXRSZW5kZXJl
ciBhcyB0aGV5IGFyZSByZWR1bmRhbnQgd2l0aCB3aGF0IHdlIGRvCisgICAgICAgIGluIHdpbGxC
ZURlc3Ryb3llZC4KKworICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGV4dEZyYWdtZW50OjpzZXRUZXh0KToKKyAgICAg
ICAgUmVtb3ZlZCBzb21lIG5vdyB1bm5lZWRlZCBjb2RlLCByZXBsYWNlZCBieSBhbiBBU1NFUlQu
IFRoaXMgaXMgYmVjYXVzZQorICAgICAgICBkZXN0cm95aW5nIG1fZmlyc3RMZXR0ZXIgd291bGQg
YXV0b21hdGljYWxseSByZXNldCB0aGUgbm9kZSdzIHJlbmRlcmVyCisgICAgICAgIGluIGRlc3Ry
b3lMZWZ0b3ZlckNoaWxkcmVuLgorCiAyMDEyLTEwLTE2ICBUYWthc2hpIFNha2Ftb3RvICA8dGFz
YWtAZ29vZ2xlLmNvbT4KIAogICAgICAgICBbTWV0YV0gW1NoYWRvd10gY29udGVudGVkaXRhYmxl
IGF0dHJpYnV0ZSBmb3IgZGlzdHJpYnV0ZWQgbm9kZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vQ29udGFpbmVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29udGFpbmVy
Tm9kZS5jcHAKaW5kZXggOTM1NzUxYzZjZGE5MWJiMTZhZWMzYzI4Y2NlY2E2ZWM5NjJlNmUwMC4u
OWIxNzhkODJhY2NjNDRlYTRkNWY3ZGNhYmZiMTQ1OTA1NmM1OTg0ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Db250YWluZXJOb2RlLmNwcApAQCAtNzEwLDkgKzcxMCw5IEBAIHZvaWQgQ29udGFpbmVyTm9k
ZTo6YXR0YWNoKCkKIAogdm9pZCBDb250YWluZXJOb2RlOjpkZXRhY2goKQogeworICAgIE5vZGU6
OmRldGFjaCgpOwogICAgIGRldGFjaENoaWxkcmVuKCk7CiAgICAgY2xlYXJDaGlsZE5lZWRzU3R5
bGVSZWNhbGMoKTsKLSAgICBOb2RlOjpkZXRhY2goKTsKIH0KIAogdm9pZCBDb250YWluZXJOb2Rl
OjpjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIsIE5vZGUqLCBOb2RlKiwgaW50
IGNoaWxkQ291bnREZWx0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAppbmRleCA5NzYwMGQ4YjAxMzM2NDM2MmJh
MDQzMTUyNDYyNDM5YmNiOWQ3ZWRjLi44ZDk5MWExMzA1ZTgzZGRmYjEzMmVlYWNjZTc4OWExMWNj
NGY4ZjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCkBAIC0xMzEyLDkgKzEzMTIsMTkgQEAgdm9pZCBOb2Rl
OjpkZXRhY2goKQogICAgIGRldGFjaGluZ05vZGUgPSB0aGlzOwogI2VuZGlmCiAKLSAgICBpZiAo
cmVuZGVyZXIoKSkKKyAgICBpZiAocmVuZGVyZXIoKSkgewogICAgICAgICByZW5kZXJlcigpLT5k
ZXN0cm95QW5kQ2xlYW51cEFub255bW91c1dyYXBwZXJzKCk7Ci0gICAgc2V0UmVuZGVyZXIoMCk7
CisjaWZuZGVmIE5ERUJVRworICAgICAgICBmb3IgKE5vZGUqIG5vZGUgPSB0aGlzOyBub2RlOyBu
b2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSh0aGlzKSkgeworICAgICAgICAgICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgICAgICAgICAvLyBSZW5k
ZXJGbG93VGhyZWFkIHJlbW92ZXMgc29tZSBlbGVtZW50cyBmcm9tIHRoZSByZWd1bGFyIHRyZWUK
KyAgICAgICAgICAgIC8vIGhpZXJhcmNoeS4gVGhleSB3aWxsIGJlIGNsZWFuZWQgdXAgd2hlbiB3
ZSBjYWxsIGRldGFjaCBvbiB0aGVtLgorICAgICAgICAgICAgQVNTRVJUKCFyZW5kZXJlciB8fCBy
ZW5kZXJlci0+aW5SZW5kZXJGbG93VGhyZWFkKCkpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9
CisKKyAgICBBU1NFUlQoIXJlbmRlcmVyKCkpOwogCiAgICAgRG9jdW1lbnQqIGRvYyA9IGRvY3Vt
ZW50KCk7CiAgICAgaWYgKGhvdmVyZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdC5jcHAKaW5kZXggN2ZlZTA1NDQyNzgwYWQ4MjdmNjI0MTc1ZTczZGYwZTYwZTQ2YTIx
My4uOWViODIwN2I1NTU1MTI3ODI1MzA2OWU2ZDcxZTJjYTVmOTVhOWU4OCAxMDA3NTUKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlck9iamVjdC5jcHAKQEAgLTIzMzYsNiArMjMzNiwxMSBAQCB2
b2lkIFJlbmRlck9iamVjdDo6d2lsbEJlRGVzdHJveWVkKCkKIAogICAgIHJlbW92ZSgpOwogCisg
ICAgLy8gQ29udGludWF0aW9uIGFuZCBmaXJzdC1sZXR0ZXIgY2FuIGdlbmVyYXRlIHNldmVyYWwg
cmVuZGVyZXJzIGFzc29jaWF0ZWQgd2l0aCBhIHNpbmdsZSBub2RlLgorICAgIC8vIFdlIG9ubHkg
d2FudCB0byBjbGVhciB0aGUgbm9kZSdzIHJlbmRlcmVyIGlmIHdlIGFyZSB0aGUgYXNzb2NpYXRl
ZCByZW5kZXJlci4KKyAgICBpZiAobm9kZSgpICYmIG5vZGUoKS0+cmVuZGVyZXIoKSA9PSB0aGlz
KQorICAgICAgICBub2RlKCktPnNldFJlbmRlcmVyKDApOworCiAjaWZuZGVmIE5ERUJVRwogICAg
IGlmICghZG9jdW1lbnRCZWluZ0Rlc3Ryb3llZCgpICYmIHZpZXcoKSAmJiB2aWV3KCktPmhhc1Jl
bmRlck5hbWVkRmxvd1RocmVhZHMoKSkgewogICAgICAgICAvLyBBZnRlciByZW1vdmUsIHRoZSBv
YmplY3QgYW5kIHRoZSBhc3NvY2lhdGVkIGluZm9ybWF0aW9uIHNob3VsZCBub3QgYmUgaW4gYW55
IGZsb3cgdGhyZWFkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck9iamVjdENoaWxkTGlzdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2Jq
ZWN0Q2hpbGRMaXN0LmNwcAppbmRleCBmZWMxMGMxZWQ1YTMwODkxZWQwMTllZmU1MzhhYTZjMTQ3
MDA2NjM0Li4wNThmOGU2ZmQyOWVjZjgzYWJhZWUwZmI5NDkzMTliN2ViOTY2M2E5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyT2JqZWN0Q2hpbGRMaXN0LmNwcApA
QCAtNTMsMTMgKzUzLDEwIEBAIHZvaWQgUmVuZGVyT2JqZWN0Q2hpbGRMaXN0OjpkZXN0cm95TGVm
dG92ZXJDaGlsZHJlbigpCiAgICAgICAgIGlmIChmaXJzdENoaWxkKCktPmlzTGlzdE1hcmtlcigp
IHx8IChmaXJzdENoaWxkKCktPnN0eWxlKCktPnN0eWxlVHlwZSgpID09IEZJUlNUX0xFVFRFUiAm
JiAhZmlyc3RDaGlsZCgpLT5pc1RleHQoKSkpCiAgICAgICAgICAgICBmaXJzdENoaWxkKCktPnJl
bW92ZSgpOyAgLy8gTGlzdCBtYXJrZXJzIGFyZSBvd25lZCBieSB0aGVpciBlbmNsb3NpbmcgbGlz
dCBhbmQgc28gZG9uJ3QgZ2V0IGRlc3Ryb3llZCBieSB0aGlzIGNvbnRhaW5lci4gU2ltaWxhcmx5
LCBmaXJzdCBsZXR0ZXJzIGFyZSBkZXN0cm95ZWQgYnkgdGhlaXIgcmVtYWluaW5nIHRleHQgZnJh
Z21lbnQuCiAgICAgICAgIGVsc2UgaWYgKGZpcnN0Q2hpbGQoKS0+aXNSdW5JbigpICYmIGZpcnN0
Q2hpbGQoKS0+bm9kZSgpKSB7Ci0gICAgICAgICAgICBmaXJzdENoaWxkKCktPm5vZGUoKS0+c2V0
UmVuZGVyZXIoMCk7CiAgICAgICAgICAgICBmaXJzdENoaWxkKCktPm5vZGUoKS0+c2V0TmVlZHNT
dHlsZVJlY2FsYygpOwogICAgICAgICAgICAgZmlyc3RDaGlsZCgpLT5kZXN0cm95KCk7CiAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBEZXN0cm95IGFueSBhbm9ueW1vdXMgY2hpbGRy
ZW4gcmVtYWluaW5nIGluIHRoZSByZW5kZXIgdHJlZSwgYXMgd2VsbCBhcyBpbXBsaWNpdCAoc2hh
ZG93KSBET00gZWxlbWVudHMgbGlrZSB0aG9zZSB1c2VkIGluIHRoZSBlbmdpbmUtYmFzZWQgdGV4
dCBmaWVsZHMuCi0gICAgICAgICAgICBpZiAoZmlyc3RDaGlsZCgpLT5ub2RlKCkpCi0gICAgICAg
ICAgICAgICAgZmlyc3RDaGlsZCgpLT5ub2RlKCktPnNldFJlbmRlcmVyKDApOwogICAgICAgICAg
ICAgZmlyc3RDaGlsZCgpLT5kZXN0cm95KCk7CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGV4dEZyYWdtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUZXh0RnJhZ21lbnQuY3BwCmluZGV4IDlmNDk3ZDM0
NDhkNDZjNWFlMGVhODc0M2M3MjcwNTE3MzA0YWZhZTkuLjVkNmUxNjVkNjBkNGE4ODYxZjI5MjBi
ZWVjMzliMjUxOTJhOWUzNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJUZXh0RnJhZ21lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJUZXh0RnJhZ21lbnQuY3BwCkBAIC04NSwxMCArODUsNyBAQCB2b2lkIFJlbmRlclRleHRGcmFn
bWVudDo6c2V0VGV4dChQYXNzUmVmUHRyPFN0cmluZ0ltcGw+IHRleHQsIGJvb2wgZm9yY2UpCiAg
ICAgICAgIEFTU0VSVCghbV9jb250ZW50U3RyaW5nKTsKICAgICAgICAgbV9maXJzdExldHRlci0+
ZGVzdHJveSgpOwogICAgICAgICBtX2ZpcnN0TGV0dGVyID0gMDsKLSAgICAgICAgaWYgKE5vZGUq
IHQgPSBub2RlKCkpIHsKLSAgICAgICAgICAgIEFTU0VSVCghdC0+cmVuZGVyZXIoKSk7Ci0gICAg
ICAgICAgICB0LT5zZXRSZW5kZXJlcih0aGlzKTsKLSAgICAgICAgfQorICAgICAgICBBU1NFUlQo
IW5vZGUoKSB8fCBub2RlKCktPnJlbmRlcmVyKCkgPT0gdGhpcyk7CiAgICAgfQogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>