<?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>32151</bug_id>
          
          <creation_ts>2009-12-04 05:08:45 -0800</creation_ts>
          <short_desc>String::append(const String&amp; str) check whether str.length() != 0</short_desc>
          <delta_ts>2009-12-04 12:01:36 -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>WebCore Misc.</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>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Zoltan Herczeg">zherczeg</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>168731</commentid>
    <comment_count>0</comment_count>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2009-12-04 05:08:45 -0800</bug_when>
    <thetext>In CachedScript.cpp:

const String&amp; CachedScript::script()
{
    ASSERT(!isPurgeable());

    if (!m_script &amp;&amp; m_data) {
        m_script = m_decoder-&gt;decode(m_data-&gt;data(), encodedSize());
        m_script += m_decoder-&gt;flush();
        setDecodedSize(m_script.length() * sizeof(UChar));
    }

    m_decodedDataDeletionTimer.startOneShot(0);
    return m_script;
}

m_decoder-&gt;flush() usually returns with an empty string. However, the append duplicates the original string even in this case. (The script can be half mbyte or more). This is an unnecessary allocation and copy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168741</commentid>
    <comment_count>1</comment_count>
      <attachid>44309</attachid>
    <who name="Zoltan Herczeg">zherczeg</who>
    <bug_when>2009-12-04 05:37:07 -0800</bug_when>
    <thetext>Created attachment 44309
(Platform) String append patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168743</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-04 05:37:31 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 44309 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168862</commentid>
    <comment_count>3</comment_count>
      <attachid>44309</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-04 12:01:27 -0800</bug_when>
    <thetext>Comment on attachment 44309
(Platform) String append patch

Clearing flags on attachment: 44309

Committed r51705: &lt;http://trac.webkit.org/changeset/51705&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>168863</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2009-12-04 12:01:36 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>44309</attachid>
            <date>2009-12-04 05:37:07 -0800</date>
            <delta_ts>2009-12-04 12:01:27 -0800</delta_ts>
            <desc>(Platform) String append patch</desc>
            <filename>0001-String-append.patch</filename>
            <type>text/plain</type>
            <size>1789</size>
            <attacher name="Zoltan Herczeg">zherczeg</attacher>
            
              <data encoding="base64">RnJvbSAzZDhhZGRiOTY4ZTNmMTc3OTdhOTgyZDFmNjVkZGUyZDA4MmRlNDg5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdAaW5mLnUtc3plZ2Vk
Lmh1PgpEYXRlOiBGcmksIDQgRGVjIDIwMDkgMTQ6MzI6NDYgKzAxMDAKU3ViamVjdDogW1BBVENI
XSBTdHJpbmcgYXBwZW5kCgpTaWduZWQtb2ZmLWJ5OiBab2x0YW4gSGVyY3plZyA8emhlcmN6ZWdA
aW5mLnUtc3plZ2VkLmh1PgotLS0KIFdlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgIHwg
ICAxNSArKysrKysrKysrKysrKysKIFdlYkNvcmUvcGxhdGZvcm0vdGV4dC9TdHJpbmcuY3BwIHwg
ICAgMyArKysKIDIgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgMCBkZWxldGlvbnMo
LSkKCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IDg1NjFiMjAuLjdmYTA5ZjIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBi
L1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMDktMTItMDQgIFpvbHRhbiBI
ZXJjemVnICA8emhlcmN6ZWdAaW5mLnUtc3plZ2VkLmh1PgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENoZWNrIHdoZXRoZXIgdGhlIHJpZ2h0IHNpZGUg
b2YgYSBzdHJpbmcgYXBwZW5kIGlzIG5vbi1lbXB0eQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzIxNTEKKworICAgICAgICBFc3BlY2lhbGx5IGJlbmVm
aWNpYWwgZm9yIENhY2hlZFNjcmlwdDo6c2NyaXB0KCkgbWV0aG9kCisgICAgICAgIHdoaWNoIHVz
dWFsbHkgYXBwZW5kcyBhbiBlbXB0eSBzdHJpbmcgcmV0dXJuZWQgYnkgZmx1c2goKQorICAgICAg
ICB0byBpdHMgbV9zY3JpcHQgbWVtYmVyLiBtX3NjcmlwdCBpcyBvZnRlbiBodW5kcmVkcyBvZiBr
Ynl0ZXMKKyAgICAgICAgd2hpY2ggaXMgZHVwbGF0ZWQgd2l0aG91dCByZWFzb24uCisKKyAgICAg
ICAgKiBwbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdHJpbmc6
OmFwcGVuZCk6CisKIDIwMDktMTEtMjkgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUB3ZWJraXQu
b3JnPgogCiAgICAgICAgIEJ1aWxkIGZpeC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0v
dGV4dC9TdHJpbmcuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAKaW5kZXgg
NDQ1ODJhOS4uMjQ2NTlhNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmlu
Zy5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1N0cmluZy5jcHAKQEAgLTgxLDYgKzgx
LDkgQEAgU3RyaW5nOjpTdHJpbmcoY29uc3QgY2hhciogc3RyLCB1bnNpZ25lZCBsZW5ndGgpCiAK
IHZvaWQgU3RyaW5nOjphcHBlbmQoY29uc3QgU3RyaW5nJiBzdHIpCiB7CisgICAgaWYgKHN0ci5p
c0VtcHR5KCkpCisgICAgICAgcmV0dXJuOworCiAgICAgLy8gRklYTUU6IFRoaXMgaXMgZXh0cmVt
ZWx5IGluZWZmaWNpZW50LiBTbyBtdWNoIHNvIHRoYXQgd2UgbWlnaHQgd2FudCB0byB0YWtlIHRo
aXMKICAgICAvLyBvdXQgb2YgU3RyaW5nJ3MgQVBJLiBXZSBjYW4gbWFrZSBpdCBiZXR0ZXIgYnkg
b3B0aW1pemluZyB0aGUgY2FzZSB3aGVyZSBleGFjdGx5CiAgICAgLy8gb25lIFN0cmluZyBpcyBw
b2ludGluZyBhdCB0aGlzIFN0cmluZ0ltcGwsIGJ1dCBldmVuIHRoZW4gaXQncyBnb2luZyB0byBy
ZXF1aXJlIGEKLS0gCjEuNi4wLjQKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>