<?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>66784</bug_id>
          
          <creation_ts>2011-08-23 10:22:45 -0700</creation_ts>
          <short_desc>HTMLImageElement: Don&apos;t cache &quot;ismap&quot; and &quot;usemap&quot; attributes.</short_desc>
          <delta_ts>2011-08-30 06:15:47 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andreas Kling">kling</reporter>
          <assigned_to name="Andreas Kling">kling</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>455474</commentid>
    <comment_count>0</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-23 10:22:45 -0700</bug_when>
    <thetext>We can save one CPU word per instance (wohoo!) by moving HTMLImageElement::ismap to the end.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455479</commentid>
    <comment_count>1</comment_count>
      <attachid>104864</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-23 10:25:56 -0700</bug_when>
    <thetext>Created attachment 104864
Proposed patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>455495</commentid>
    <comment_count>2</comment_count>
      <attachid>104864</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-23 10:43:22 -0700</bug_when>
    <thetext>Comment on attachment 104864
Proposed patch

This change is OK.

But really ismap is just the cached result of hasAttribute(ismapAttr). It would be better to get rid of the boolean entirely and just call hasAttribute(ismapAttr) instead.

We could do something similar for usemap too. Generally speaking there is little value to caching a copy of an attribute unless there’s something super-performance-critical. For m_name and m_id this may be justified since it’s critical to know what the old value of the attribute was when it changes, but even there I think we might be able to optimize the storage out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457570</commentid>
    <comment_count>3</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-26 09:00:43 -0700</bug_when>
    <thetext>Rescoping since Darin has a pretty good point.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457575</commentid>
    <comment_count>4</comment_count>
      <attachid>105360</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-26 09:17:24 -0700</bug_when>
    <thetext>Created attachment 105360
Proposed patch v2

Remove the class members altogether and look them up with fast{Has,Get}Attribute() when needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457591</commentid>
    <comment_count>5</comment_count>
      <attachid>105360</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-26 09:55:00 -0700</bug_when>
    <thetext>Comment on attachment 105360
Proposed patch v2

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

&gt; Source/WebCore/html/HTMLImageElement.cpp:-137
&gt; -    } else if (attrName == ismapAttr)
&gt; -        ismap = true;

I&apos;m unsure whether it&apos;s preferred to still catch ismapAttr here, but do nothing, rather than calling the base class.

&gt; Source/WebCore/html/HTMLImageElement.cpp:401
&gt; +    AtomicString usemap = fastGetAttribute(usemapAttr);

On second thought, this should probably be &quot;const AtomicString&amp; usemap = ...&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>457605</commentid>
    <comment_count>6</comment_count>
      <attachid>105360</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-08-26 10:15:33 -0700</bug_when>
    <thetext>Comment on attachment 105360
Proposed patch v2

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

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:-137
&gt;&gt; -        ismap = true;
&gt; 
&gt; I&apos;m unsure whether it&apos;s preferred to still catch ismapAttr here, but do nothing, rather than calling the base class.

I think it’s fine to leave out the code and thus call the base class. I don’t know of any concrete benefits of not calling the base class.

&gt;&gt; Source/WebCore/html/HTMLImageElement.cpp:401
&gt;&gt; +    AtomicString usemap = fastGetAttribute(usemapAttr);
&gt; 
&gt; On second thought, this should probably be &quot;const AtomicString&amp; usemap = ...&quot;

Yes, that would be slightly better.

&gt; Source/WebCore/html/HTMLImageElement.cpp:403
&gt; +    if (usemap.string()[0] == &apos;#&apos;)
&gt; +        return false;

I think this could use a “why” comment.

&gt; Source/WebCore/html/HTMLImageElement.cpp:405
&gt; +    return document()-&gt;completeURL(stripLeadingAndTrailingHTMLSpaces(usemap)).isEmpty();

I’m not sure we have to call completeURL just to check if it’s empty. I think that the completeURL implementation guarantees that passed-in empty strings result in an empty URL and passed-in non-empty strings result in a non-empty URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458849</commentid>
    <comment_count>7</comment_count>
      <attachid>105617</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-08-30 05:15:02 -0700</bug_when>
    <thetext>Created attachment 105617
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458867</commentid>
    <comment_count>8</comment_count>
      <attachid>105617</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 06:15:42 -0700</bug_when>
    <thetext>Comment on attachment 105617
Patch for landing

Clearing flags on attachment: 105617

Committed r94074: &lt;http://trac.webkit.org/changeset/94074&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>458868</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-30 06:15:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>104864</attachid>
            <date>2011-08-23 10:25:56 -0700</date>
            <delta_ts>2011-08-26 09:17:24 -0700</delta_ts>
            <desc>Proposed patch</desc>
            <filename>bug-66784.diff</filename>
            <type>text/plain</type>
            <size>1823</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBkMGZhOTQ4Li5mMjY5ZWJmIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcg
QEAKKzIwMTEtMDgtMjMgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAg
ICAgIEhUTUxJbWFnZUVsZW1lbnQ6IFJlb3JkZXIgbWVtYmVycyB0byByZWR1Y2UgbWVtb3J5IHVz
YWdlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY3
ODQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNb3Zl
ICdpc21hcCcgdG8gdGhlIGVuZCBvZiB0aGUgbWVtYmVyIGxpc3QgdG8gc2F2ZSBvbmUgQ1BVIHdv
cmQKKyAgICAgICAgcGVyIEhUTUxJbWFnZUVsZW1lbnQgaW5zdGFuY2UuCisKKyAgICAgICAgKiBo
dG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxl
bWVudDo6SFRNTEltYWdlRWxlbWVudCk6CisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
Lmg6CisKIDIwMTEtMDgtMjIgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIENTUzogSW1wbGVtZW50ICdmb250JyBwcm9wZXJ0eSBpbiBDU1NDb21wdXRlZFN0eWxl
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5kZXggYTkxN2VjMC4u
YjM5NDVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC00
NCw5ICs0NCw5IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBIVE1MSW1hZ2VFbGVtZW50
OjpIVE1MSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgIDogSFRNTEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2ltYWdlTG9hZGVyKHRoaXMpCi0gICAgLCBpc21hcChm
YWxzZSkKICAgICAsIG1fZm9ybShmb3JtKQogICAgICwgbV9jb21wb3NpdGVPcGVyYXRvcihDb21w
b3NpdGVTb3VyY2VPdmVyKQorICAgICwgaXNtYXAoZmFsc2UpCiB7CiAgICAgQVNTRVJUKGhhc1Rh
Z05hbWUoaW1nVGFnKSk7CiAgICAgaWYgKGZvcm0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5oCmluZGV4IDkzYzg3YjkuLjVlMTA1ZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEltYWdlRWxlbWVudC5oCkBAIC0xMDQsMTEgKzEwNCwxMSBAQCBwcml2YXRlOgogCiAgICAgSFRN
TEltYWdlTG9hZGVyIG1faW1hZ2VMb2FkZXI7CiAgICAgU3RyaW5nIHVzZW1hcDsKLSAgICBib29s
IGlzbWFwOwogICAgIEhUTUxGb3JtRWxlbWVudCogbV9mb3JtOwogICAgIEF0b21pY1N0cmluZyBt
X25hbWU7CiAgICAgQXRvbWljU3RyaW5nIG1faWQ7CiAgICAgQ29tcG9zaXRlT3BlcmF0b3IgbV9j
b21wb3NpdGVPcGVyYXRvcjsKKyAgICBib29sIGlzbWFwOwogfTsKIAogfSAvL25hbWVzcGFjZQo=
</data>
<flag name="review"
          id="100850"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105360</attachid>
            <date>2011-08-26 09:17:24 -0700</date>
            <delta_ts>2011-08-30 05:14:18 -0700</delta_ts>
            <desc>Proposed patch v2</desc>
            <filename>bug-66784-v2.diff</filename>
            <type>text/plain</type>
            <size>3476</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBjMjI3M2I3Li44NmQxMjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMjEg
QEAKIDIwMTEtMDgtMjYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCisgICAg
ICAgIEhUTUxJbWFnZUVsZW1lbnQ6IERvbid0IGNhY2hlICJpc21hcCIgYW5kICJ1c2VtYXAiIGF0
dHJpYnV0ZXMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Njc4NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50Lmg6IFJlbW92ZSB0aGUgImlzbWFwIiBhbmQgInVzZW1h
cCIgbWVtYmVycywKKyAgICAgICAgc2hyaW5raW5nIEhUTUxJbWFnZUVsZW1lbnQgYnkgMTYgYnl0
ZXMgKG9uIDY0LWJpdC4pCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQ6OkhUTUxJbWFnZUVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBN
b3N0IG9mIHRoZSBsb2dpYworICAgICAgICBmb3IgImlzbWFwIiBhbmQgInVzZW1hcCIgbW92ZWQg
aW50byBpc1NlcnZlck1hcCgpLgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6
aXNTZXJ2ZXJNYXApOiBPdXQtb2YtbGluZWQgYW5kIGltcGxlbWVudGVkCisgICAgICAgIHVzaW5n
IGZhc3QqQXR0cmlidXRlKCkuCisKKzIwMTEtMDgtMjYgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3
ZWJraXQub3JnPgorCiAgICAgICAgIFtRdF0gUGF0aDo6Ym91bmRpbmdSZWN0KCkgaXMgdW5uZWNl
c3NhcmlseSBzbG93LgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NjY4NTQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5jcHAKaW5k
ZXggYTkxN2VjMC4uNmU3MDYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
SW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1l
bnQuY3BwCkBAIC00NCw3ICs0NCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiBIVE1M
SW1hZ2VFbGVtZW50OjpIVE1MSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3JtKQogICAgIDogSFRN
TEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2ltYWdlTG9hZGVyKHRoaXMpCi0g
ICAgLCBpc21hcChmYWxzZSkKICAgICAsIG1fZm9ybShmb3JtKQogICAgICwgbV9jb21wb3NpdGVP
cGVyYXRvcihDb21wb3NpdGVTb3VyY2VPdmVyKQogewpAQCAtMTI3LDE0ICsxMjYsOCBAQCB2b2lk
IEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSogYXR0cikK
ICAgICAgICAgYWRkSFRNTEFsaWdubWVudChhdHRyKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9
PSB2YWxpZ25BdHRyKQogICAgICAgICBhZGRDU1NQcm9wZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVZl
cnRpY2FsQWxpZ24sIGF0dHItPnZhbHVlKCkpOwotICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IHVz
ZW1hcEF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZhbHVlKCkuc3RyaW5nKClbMF0gPT0gJyMn
KQotICAgICAgICAgICAgdXNlbWFwID0gYXR0ci0+dmFsdWUoKTsKLSAgICAgICAgZWxzZQotICAg
ICAgICAgICAgdXNlbWFwID0gZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5k
VHJhaWxpbmdIVE1MU3BhY2VzKGF0dHItPnZhbHVlKCkpKS5zdHJpbmcoKTsKKyAgICBlbHNlIGlm
IChhdHRyTmFtZSA9PSB1c2VtYXBBdHRyKQogICAgICAgICBzZXRJc0xpbmsoIWF0dHItPmlzTnVs
bCgpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IGlzbWFwQXR0cikKLSAgICAgICAgaXNt
YXAgPSB0cnVlOwogICAgIGVsc2UgaWYgKGF0dHJOYW1lID09IG9uYWJvcnRBdHRyKQogICAgICAg
ICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5hYm9ydEV2ZW50LCBjcmVh
dGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHIpKTsKICAgICBlbHNlIGlmIChhdHRy
TmFtZSA9PSBvbmxvYWRBdHRyKQpAQCAtNDAwLDQgKzM5MywxNiBAQCB2b2lkIEhUTUxJbWFnZUVs
ZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50KCkKICAgICBIVE1MRWxlbWVudDo6d2ls
bE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIH0KIAorYm9vbCBIVE1MSW1hZ2VFbGVtZW50Ojpp
c1NlcnZlck1hcCgpIGNvbnN0Cit7CisgICAgaWYgKCFmYXN0SGFzQXR0cmlidXRlKGlzbWFwQXR0
cikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIEF0b21pY1N0cmluZyB1c2VtYXAgPSBm
YXN0R2V0QXR0cmlidXRlKHVzZW1hcEF0dHIpOworICAgIGlmICh1c2VtYXAuc3RyaW5nKClbMF0g
PT0gJyMnKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKHVzZW1hcCkpLmlz
RW1wdHkoKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuaAppbmRl
eCA5M2M4N2I5Li5lOGFkZWVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bWFnZUVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQu
aApAQCAtNDcsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAgaW50IG5hdHVyYWxXaWR0aCgpIGNvbnN0
OwogICAgIGludCBuYXR1cmFsSGVpZ2h0KCkgY29uc3Q7CiAKLSAgICBib29sIGlzU2VydmVyTWFw
KCkgY29uc3QgeyByZXR1cm4gaXNtYXAgJiYgdXNlbWFwLmlzRW1wdHkoKTsgfQorICAgIGJvb2wg
aXNTZXJ2ZXJNYXAoKSBjb25zdDsKIAogICAgIFN0cmluZyBhbHRUZXh0KCkgY29uc3Q7CiAKQEAg
LTEwMyw4ICsxMDMsNiBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbVRy
ZWUoYm9vbCBkZWVwKTsKIAogICAgIEhUTUxJbWFnZUxvYWRlciBtX2ltYWdlTG9hZGVyOwotICAg
IFN0cmluZyB1c2VtYXA7Ci0gICAgYm9vbCBpc21hcDsKICAgICBIVE1MRm9ybUVsZW1lbnQqIG1f
Zm9ybTsKICAgICBBdG9taWNTdHJpbmcgbV9uYW1lOwogICAgIEF0b21pY1N0cmluZyBtX2lkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105617</attachid>
            <date>2011-08-30 05:15:02 -0700</date>
            <delta_ts>2011-08-30 06:15:42 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66784-20110830141500.patch</filename>
            <type>text/plain</type>
            <size>3786</size>
            <attacher name="Andreas Kling">kling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTQwNjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA0YTYyN2E2YjIwMjc2YmJk
NjZmOWY1OWI0ODU0YTdmZmZlYWQ0M2RkLi4yOGU5ZGQzOGFmMmQ1YWYzMzNlZDhlMzdlZmRhNTYz
MTUxMjA3ZTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTEtMDgtMzAgIEFuZHJl
YXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgorCisgICAgICAgIEhUTUxJbWFnZUVsZW1lbnQ6
IERvbid0IGNhY2hlICJpc21hcCIgYW5kICJ1c2VtYXAiIGF0dHJpYnV0ZXMuCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Njc4NAorCisgICAgICAgIFJl
dmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAgICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50
Lmg6IFJlbW92ZSB0aGUgImlzbWFwIiBhbmQgInVzZW1hcCIgbWVtYmVycywKKyAgICAgICAgc2hy
aW5raW5nIEhUTUxJbWFnZUVsZW1lbnQgYnkgMTYgYnl0ZXMgKG9uIDY0LWJpdC4pCisgICAgICAg
ICogaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbWFn
ZUVsZW1lbnQ6OkhUTUxJbWFnZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTEltYWdl
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOiBNb3N0IG9mIHRoZSBsb2dpYworICAgICAg
ICBmb3IgImlzbWFwIiBhbmQgInVzZW1hcCIgbW92ZWQgaW50byBpc1NlcnZlck1hcCgpLgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTEltYWdlRWxlbWVudDo6aXNTZXJ2ZXJNYXApOiBPdXQtb2YtbGlu
ZWQgYW5kIGltcGxlbWVudGVkCisgICAgICAgIHVzaW5nIGZhc3QqQXR0cmlidXRlKCkuCisKIDIw
MTEtMDgtMzAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgbGFz
dENoYW5nZVdhc1VzZXJFZGl0IGNvbnRpbnVlcyB0byByZXR1cm4gdHJ1ZSB3aGVuIGlubmVyVGV4
dCBvciB0ZXh0Q29udGVudCBpcyBtb2RpZmllZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEltYWdl
RWxlbWVudC5jcHAKaW5kZXggYTkxN2VjMDBiOWFhYTVhZGM0NmJiNTAxYjVmMmJmZjI4ODFmZTg0
My4uOGYyODk5MmUxNDZhN2RhZDlhMGE3ZDcyYzU0NWIzM2Q5NTI1YzFkMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxJbWFnZUVsZW1lbnQuY3BwCkBAIC00NCw3ICs0NCw2IEBAIHVzaW5nIG5h
bWVzcGFjZSBIVE1MTmFtZXM7CiBIVE1MSW1hZ2VFbGVtZW50OjpIVE1MSW1hZ2VFbGVtZW50KGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCwgSFRNTEZvcm1F
bGVtZW50KiBmb3JtKQogICAgIDogSFRNTEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAg
LCBtX2ltYWdlTG9hZGVyKHRoaXMpCi0gICAgLCBpc21hcChmYWxzZSkKICAgICAsIG1fZm9ybShm
b3JtKQogICAgICwgbV9jb21wb3NpdGVPcGVyYXRvcihDb21wb3NpdGVTb3VyY2VPdmVyKQogewpA
QCAtMTI3LDE0ICsxMjYsOCBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OnBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSogYXR0cikKICAgICAgICAgYWRkSFRNTEFsaWdubWVudChhdHRyKTsK
ICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSB2YWxpZ25BdHRyKQogICAgICAgICBhZGRDU1NQcm9w
ZXJ0eShhdHRyLCBDU1NQcm9wZXJ0eVZlcnRpY2FsQWxpZ24sIGF0dHItPnZhbHVlKCkpOwotICAg
IGVsc2UgaWYgKGF0dHJOYW1lID09IHVzZW1hcEF0dHIpIHsKLSAgICAgICAgaWYgKGF0dHItPnZh
bHVlKCkuc3RyaW5nKClbMF0gPT0gJyMnKQotICAgICAgICAgICAgdXNlbWFwID0gYXR0ci0+dmFs
dWUoKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgdXNlbWFwID0gZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxpbmdIVE1MU3BhY2VzKGF0dHItPnZhbHVlKCkp
KS5zdHJpbmcoKTsKKyAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSB1c2VtYXBBdHRyKQogICAgICAg
ICBzZXRJc0xpbmsoIWF0dHItPmlzTnVsbCgpKTsKLSAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09
IGlzbWFwQXR0cikKLSAgICAgICAgaXNtYXAgPSB0cnVlOwogICAgIGVsc2UgaWYgKGF0dHJOYW1l
ID09IG9uYWJvcnRBdHRyKQogICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5hYm9ydEV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHIpKTsKICAgICBlbHNlIGlmIChhdHRyTmFtZSA9PSBvbmxvYWRBdHRyKQpAQCAtNDAwLDQgKzM5
MywxOCBAQCB2b2lkIEhUTUxJbWFnZUVsZW1lbnQ6OndpbGxNb3ZlVG9OZXdPd25lckRvY3VtZW50
KCkKICAgICBIVE1MRWxlbWVudDo6d2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKIH0KIAor
Ym9vbCBIVE1MSW1hZ2VFbGVtZW50Ojppc1NlcnZlck1hcCgpIGNvbnN0Cit7CisgICAgaWYgKCFm
YXN0SGFzQXR0cmlidXRlKGlzbWFwQXR0cikpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAg
IGNvbnN0IEF0b21pY1N0cmluZyYgdXNlbWFwID0gZmFzdEdldEF0dHJpYnV0ZSh1c2VtYXBBdHRy
KTsKKyAgICAKKyAgICAvLyBJZiB0aGUgdXNlbWFwIGF0dHJpYnV0ZSBzdGFydHMgd2l0aCAnIycs
IGl0IHJlZmVycyB0byBhIG1hcCBlbGVtZW50IGluIHRoZSBkb2N1bWVudC4KKyAgICBpZiAodXNl
bWFwLnN0cmluZygpWzBdID09ICcjJykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0
dXJuIGRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyh1c2VtYXApKS5pc0VtcHR5KCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEltYWdlRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1h
Z2VFbGVtZW50LmgKaW5kZXggOTNjODdiOWZmZTJlNWRiZTNmZTY3ZWZlYjM4ODJlOTljOWVjOTMw
OS4uZThhZGVlZGVkNDE1MTkzMmRhYmUyYjk3Yzg1MDU0MzhiOWFlMjE3MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MSW1hZ2VFbGVtZW50LmgKQEAgLTQ3LDcgKzQ3LDcgQEAgcHVibGljOgogICAg
IGludCBuYXR1cmFsV2lkdGgoKSBjb25zdDsKICAgICBpbnQgbmF0dXJhbEhlaWdodCgpIGNvbnN0
OwogCi0gICAgYm9vbCBpc1NlcnZlck1hcCgpIGNvbnN0IHsgcmV0dXJuIGlzbWFwICYmIHVzZW1h
cC5pc0VtcHR5KCk7IH0KKyAgICBib29sIGlzU2VydmVyTWFwKCkgY29uc3Q7CiAKICAgICBTdHJp
bmcgYWx0VGV4dCgpIGNvbnN0OwogCkBAIC0xMDMsOCArMTAzLDYgQEAgcHJpdmF0ZToKICAgICB2
aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21UcmVlKGJvb2wgZGVlcCk7CiAKICAgICBIVE1MSW1hZ2VM
b2FkZXIgbV9pbWFnZUxvYWRlcjsKLSAgICBTdHJpbmcgdXNlbWFwOwotICAgIGJvb2wgaXNtYXA7
CiAgICAgSFRNTEZvcm1FbGVtZW50KiBtX2Zvcm07CiAgICAgQXRvbWljU3RyaW5nIG1fbmFtZTsK
ICAgICBBdG9taWNTdHJpbmcgbV9pZDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>