<?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>96446</bug_id>
          
          <creation_ts>2012-09-11 16:24:28 -0700</creation_ts>
          <short_desc>Element::classAttributeChanged should use characters8/16 to find first non-whitespace</short_desc>
          <delta_ts>2022-02-27 23:19:06 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>717699</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-09-11 16:24:28 -0700</bug_when>
    <thetext>Element::classAttributeChanged should be changed to use characters8() or characters16() based on string bitness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717768</commentid>
    <comment_count>1</comment_count>
      <attachid>163489</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-09-11 17:43:22 -0700</bug_when>
    <thetext>Created attachment 163489
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>717782</commentid>
    <comment_count>2</comment_count>
      <attachid>163489</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2012-09-11 18:01:36 -0700</bug_when>
    <thetext>Comment on attachment 163489
Patch

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

Looks like a good idea to me.

&gt; Source/WebCore/dom/Element.cpp:765
&gt;      for (i = 0; i &lt; length; ++i) {
&gt;          if (isNotHTMLSpace(characters[i]))
&gt;              break;
&gt;      }

If perf is important, this could become a do {} while() since we know length &gt; 0.
Add ASSERT(length) if you do that change.

&gt; Source/WebCore/dom/Element.cpp:773
&gt; +    bool hasClass = !!length &amp;&amp; (newClassString.is8Bit() ? classStringHasClassName(newClassString.characters8(), length) : classStringHasClassName(newClassString.characters16(), length));

I am not a fan of this long line.

I would change classStringHasClassName(AtomicString*) to call a classStringHasClassNameImpl&lt;&gt;(CharacterType, length).
That way the function can stay just as clean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>718739</commentid>
    <comment_count>3</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-09-12 14:40:07 -0700</bug_when>
    <thetext>Committed r128363: &lt;http://trac.webkit.org/changeset/128363&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163489</attachid>
            <date>2012-09-11 17:43:22 -0700</date>
            <delta_ts>2022-02-27 23:19:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>96446.patch</filename>
            <type>text/plain</type>
            <size>3792</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMjgyNDgpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTExICBNaWNoYWVsIFNhYm9mZiAgPG1z
YWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIEVsZW1lbnQ6OmNsYXNzQXR0cmlidXRlQ2hhbmdl
ZCBzaG91bGQgdXNlIGNoYXJhY3RlcnM4LzE2IHRvIGZpbmQgZmlyc3Qgbm9uLXdoaXRlc3BhY2UK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NDQ2CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgYml0
IHNpemUgcmVsYXRlZCBzdHJpbmcgYWNjZXNzb3JzIHRvIEF0b21pY1N0cmluZyB0byBzdXBwb3J0
IGNoYW5nZS4KKworICAgICAgICAqIHd0Zi90ZXh0L0F0b21pY1N0cmluZy5oOgorICAgICAgICAo
QXRvbWljU3RyaW5nKToKKyAgICAgICAgKFdURjo6QXRvbWljU3RyaW5nOjppczhCaXQpOgorICAg
ICAgICAoV1RGOjpBdG9taWNTdHJpbmc6OmNoYXJhY3RlcnM4KToKKyAgICAgICAgKFdURjo6QXRv
bWljU3RyaW5nOjpjaGFyYWN0ZXJzMTYpOgorCiAyMDEyLTA5LTExICBNaWNoYWVsIFNhYm9mZiAg
PG1zYWJvZmZAYXBwbGUuY29tPgogCiAgICAgICAgIEJ1aWxkIGZpeGVkIGZvciBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC8xMjgyNDMKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL3RleHQv
QXRvbWljU3RyaW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuaAkocmV2aXNpb24gMTI3OTc1KQorKysgU291cmNlL1dURi93dGYvdGV4dC9BdG9taWNT
dHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtODYsOCArODYsMTEgQEAgcHVibGljOgogICAgIGNv
bnN0IFN0cmluZyYgc3RyaW5nKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH07CiAKICAgICBB
dG9taWNTdHJpbmdJbXBsKiBpbXBsKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8QXRvbWlj
U3RyaW5nSW1wbCAqPihtX3N0cmluZy5pbXBsKCkpOyB9Ci0gICAgCisKKyAgICBib29sIGlzOEJp
dCgpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nLmlzOEJpdCgpOyB9CiAgICAgY29uc3QgVUNoYXIq
IGNoYXJhY3RlcnMoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jaGFyYWN0ZXJzKCk7IH0KKyAg
ICBjb25zdCBMQ2hhciogY2hhcmFjdGVyczgoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZy5jaGFy
YWN0ZXJzOCgpOyB9CisgICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMxNigpIGNvbnN0IHsgcmV0
dXJuIG1fc3RyaW5nLmNoYXJhY3RlcnMxNigpOyB9CiAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3QgeyByZXR1cm4gbV9zdHJpbmcubGVuZ3RoKCk7IH0KICAgICAKICAgICBVQ2hhciBvcGVyYXRv
cltdKHVuc2lnbmVkIGludCBpKSBjb25zdCB7IHJldHVybiBtX3N0cmluZ1tpXTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwkocmV2aXNpb24gMTI4MjQ4KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTItMDktMTEgIE1pY2hhZWwgU2Fib2Zm
ICA8bXNhYm9mZkBhcHBsZS5jb20+CisKKyAgICAgICAgRWxlbWVudDo6Y2xhc3NBdHRyaWJ1dGVD
aGFuZ2VkIHNob3VsZCB1c2UgY2hhcmFjdGVyczgvMTYgdG8gZmluZCBmaXJzdCBub24td2hpdGVz
cGFjZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY0
NDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWRl
IGEgbmV3IHN0YXRpYyB0ZW1wbGF0ZWQgbWV0aG9kIHRvIGhhbmRsZSA4IG9yIDE2IGJpdCBjbGFz
cyBuYW1lcy4KKworICAgICAgICBObyBmdW5jdGlvbmFsIGNoYW5nZSwgc28gbm8gbmV3IHRlc3Rz
LgorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2xhc3NT
dHJpbmdIYXNDbGFzc05hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Y2xhc3NBdHRy
aWJ1dGVDaGFuZ2VkKToKKwogMjAxMi0wOS0xMSAgQWxlYyBGbGV0dCAgPGFsZWNmbGV0dEBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQWRkICdhbnknIHR5cGUgdG8gVjggYmluZGluZ3MgYXMgYSBz
eW5vbnltIGZvciBET01PYmplY3QgICAgICAgICAgICAgICAgCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCShyZXZpc2lvbiAxMjc5NzUpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTc1NSwxNiArNzU1LDIzIEBAIHZvaWQgRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgQXR0cmkKICAgICAgICAgY2xhc3NBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJpYnV0ZS52YWx1ZSgpKTsKIH0KIAotdm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgQXRvbWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKK3RlbXBsYXRlIDx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorc3RhdGljIGlubGluZSBib29sIGNsYXNzU3RyaW5nSGFzQ2xhc3NO
YW1lKGNvbnN0IENoYXJhY3RlclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsK
LSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IG5ld0NsYXNzU3RyaW5nLmNoYXJhY3RlcnMo
KTsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBuZXdDbGFzc1N0cmluZy5sZW5ndGgoKTsKICAgICB1
bnNpZ25lZCBpOwogICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBp
ZiAoaXNOb3RIVE1MU3BhY2UoY2hhcmFjdGVyc1tpXSkpCiAgICAgICAgICAgICBicmVhazsKICAg
ICB9Ci0gICAgYm9vbCBoYXNDbGFzcyA9IGkgPCBsZW5ndGg7CisKKyAgICByZXR1cm4gaSA8IGxl
bmd0aDsKK30KKwordm9pZCBFbGVtZW50OjpjbGFzc0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgQXRv
bWljU3RyaW5nJiBuZXdDbGFzc1N0cmluZykKK3sKKyAgICB1bnNpZ25lZCBsZW5ndGggPSBuZXdD
bGFzc1N0cmluZy5sZW5ndGgoKTsKKyAgICBib29sIGhhc0NsYXNzID0gISFsZW5ndGggJiYgKG5l
d0NsYXNzU3RyaW5nLmlzOEJpdCgpID8gY2xhc3NTdHJpbmdIYXNDbGFzc05hbWUobmV3Q2xhc3NT
dHJpbmcuY2hhcmFjdGVyczgoKSwgbGVuZ3RoKSA6IGNsYXNzU3RyaW5nSGFzQ2xhc3NOYW1lKG5l
d0NsYXNzU3RyaW5nLmNoYXJhY3RlcnMxNigpLCBsZW5ndGgpKTsKKwogICAgIGlmIChoYXNDbGFz
cykgewogICAgICAgICBjb25zdCBib29sIHNob3VsZEZvbGRDYXNlID0gZG9jdW1lbnQoKS0+aW5R
dWlya3NNb2RlKCk7CiAgICAgICAgIGVuc3VyZUF0dHJpYnV0ZURhdGEoKS0+c2V0Q2xhc3MobmV3
Q2xhc3NTdHJpbmcsIHNob3VsZEZvbGRDYXNlKTsK
</data>
<flag name="review"
          id="174948"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>