<?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>24046</bug_id>
          
          <creation_ts>2009-02-19 16:35:29 -0800</creation_ts>
          <short_desc>Misc improvements to CString</short_desc>
          <delta_ts>2009-02-20 07:31:53 -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>Platform</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="Darin Fisher (:fishd, Google)">fishd</reporter>
          <assigned_to name="Darin Fisher (:fishd, Google)">fishd</assigned_to>
          <cc>beidson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>110319</commentid>
    <comment_count>0</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-02-19 16:35:29 -0800</bug_when>
    <thetext>Misc improvements to CString

1- Make it possible to initialize a CString from a CStringBuffer
2- Make it possible to get a CStringBuffer from a CString
3- Change CStringBuffer::data() to return a const pointer to ward off mutation
4- Remove unused releaseBuffer() methods.
5- Make CStringBuffer::create() private to force consumers to get a CStringBuffer from a CString.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110323</commentid>
    <comment_count>1</comment_count>
      <attachid>27816</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-02-19 16:51:37 -0800</bug_when>
    <thetext>Created attachment 27816
v1 patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110324</commentid>
    <comment_count>2</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-02-19 16:52:53 -0800</bug_when>
    <thetext>There is no consumer yet for CString::buffer() and the corresponding constructor, but I am brewing such a consumer that will live in the chromium WebKit layer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110325</commentid>
    <comment_count>3</comment_count>
      <attachid>27816</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-19 16:59:57 -0800</bug_when>
    <thetext>Comment on attachment 27816
v1 patch

This looks fine.  It&apos;s kinda sad how we&apos;re growing a parallel string class here, but that happened long ago, and was inevitable based on how many APIs outside of WebKit depend on char* strings.  (And doesn&apos;t really relate to this patch.)

releaseBuffer() was not used anywhere?  I&apos;m surprised.

Looks fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110328</commentid>
    <comment_count>4</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-02-19 17:04:13 -0800</bug_when>
    <thetext>I see releaseBuffer was added:

2008-03-25  Brady Eidson  &lt;beidson@apple.com&gt;

        Reviewed by Anders

        Add the ability to transform a CString into a SharedBuffer to avoid copying data
        This is valuable to avoid copying a block of data for an upcoming patch

        * platform/SharedBuffer.cpp:
        (WebCore::SharedBuffer::adoptVector):
        * platform/SharedBuffer.h:

        * platform/text/CString.cpp:
        (WebCore::CString::releaseBuffer):
        * platform/text/CString.h:
        (WebCore::CStringBuffer::releaseBuffer):


But I don&apos;t see the upcomming patch. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>110391</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2009-02-20 07:31:53 -0800</bug_when>
    <thetext>Brady, please let me know if you want releaseBuffer added back.

Landed as http://trac.webkit.org/changeset/41105</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27816</attachid>
            <date>2009-02-19 16:51:37 -0800</date>
            <delta_ts>2009-02-19 16:59:57 -0800</delta_ts>
            <desc>v1 patch</desc>
            <filename>cs_1.diff</filename>
            <type>text/plain</type>
            <size>4855</size>
            <attacher name="Darin Fisher (:fishd, Google)">fishd</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDQxMDkz
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjkgQEAKKzIwMDktMDIt
MTkgIERhcmluIEZpc2hlciAgPGRhcmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjQwNDYKKworICAgICAgICBTZXZlcmFsIGltcHJvdmVtZW50cyB0byBD
U3RyaW5nOgorICAgICAgICAxLSBNYWtlIGl0IHBvc3NpYmxlIHRvIGluaXRpYWxpemUgYSBDU3Ry
aW5nIGZyb20gYSBDU3RyaW5nQnVmZmVyCisgICAgICAgIDItIE1ha2UgaXQgcG9zc2libGUgdG8g
Z2V0IGEgQ1N0cmluZ0J1ZmZlciBmcm9tIGEgQ1N0cmluZworICAgICAgICAzLSBDaGFuZ2UgQ1N0
cmluZ0J1ZmZlcjo6ZGF0YSgpIHRvIHJldHVybiBhIGNvbnN0IHBvaW50ZXIgdG8gd2FyZCBvZmYg
bXV0YXRpb24KKyAgICAgICAgNC0gUmVtb3ZlIHVudXNlZCByZWxlYXNlQnVmZmVyKCkgbWV0aG9k
cy4KKyAgICAgICAgNS0gTWFrZSBDU3RyaW5nQnVmZmVyOjpjcmVhdGUoKSBwcml2YXRlIHRvIGZv
cmNlIGNvbnN1bWVycyB0byBnZXQgYSBDU3RyaW5nQnVmZmVyIGZyb20gYSBDU3RyaW5nLgorCisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9DU3RyaW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNT
dHJpbmc6OmluaXQpOgorICAgICAgICAoV2ViQ29yZTo6Q1N0cmluZzo6bXV0YWJsZURhdGEpOgor
ICAgICAgICAoV2ViQ29yZTo6Q1N0cmluZzo6bmV3VW5pbml0aWFsaXplZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDU3RyaW5nOjpjb3B5QnVmZmVySWZOZWVkZWQpOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvQ1N0cmluZy5oOgorICAgICAgICAoV2ViQ29yZTo6Q1N0cmluZ0J1ZmZlcjo6ZGF0YSk6
CisgICAgICAgIChXZWJDb3JlOjpDU3RyaW5nQnVmZmVyOjpsZW5ndGgpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1N0cmluZ0J1ZmZlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTdHJpbmdC
dWZmZXI6Om11dGFibGVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkNTdHJpbmc6OkNTdHJpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6Q1N0cmluZzo6YnVmZmVyKToKKwogMjAwOS0wMi0xOSAgU2Ft
IFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEJldGggRGFr
aW4uCkluZGV4OiBwbGF0Zm9ybS90ZXh0L0NTdHJpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBsYXRm
b3JtL3RleHQvQ1N0cmluZy5jcHAJKHJldmlzaW9uIDQxMDkwKQorKysgcGxhdGZvcm0vdGV4dC9D
U3RyaW5nLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDcsOCArNDcsOCBAQCB2b2lkIENTdHJpbmc6
OmluaXQoY29uc3QgY2hhciogc3RyLCB1bnNpCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBt
X2J1ZmZlciA9IENTdHJpbmdCdWZmZXI6OmNyZWF0ZShsZW5ndGggKyAxKTsKLSAgICBtZW1jcHko
bV9idWZmZXItPmRhdGEoKSwgc3RyLCBsZW5ndGgpOyAKLSAgICBtX2J1ZmZlci0+ZGF0YSgpW2xl
bmd0aF0gPSAnXDAnOworICAgIG1lbWNweShtX2J1ZmZlci0+bXV0YWJsZURhdGEoKSwgc3RyLCBs
ZW5ndGgpOyAKKyAgICBtX2J1ZmZlci0+bXV0YWJsZURhdGEoKVtsZW5ndGhdID0gJ1wwJzsKIH0K
IAogY29uc3QgY2hhciogQ1N0cmluZzo6ZGF0YSgpIGNvbnN0CkBAIC02MSw3ICs2MSw3IEBAIGNo
YXIqIENTdHJpbmc6Om11dGFibGVEYXRhKCkKICAgICBjb3B5QnVmZmVySWZOZWVkZWQoKTsKICAg
ICBpZiAoIW1fYnVmZmVyKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gbV9idWZmZXIt
PmRhdGEoKTsKKyAgICByZXR1cm4gbV9idWZmZXItPm11dGFibGVEYXRhKCk7CiB9CiAgICAgCiB1
bnNpZ25lZCBDU3RyaW5nOjpsZW5ndGgoKSBjb25zdApAQCAtNzMsNyArNzMsNyBAQCBDU3RyaW5n
IENTdHJpbmc6Om5ld1VuaW5pdGlhbGl6ZWQoc2l6ZV90CiB7CiAgICAgQ1N0cmluZyByZXN1bHQ7
CiAgICAgcmVzdWx0Lm1fYnVmZmVyID0gQ1N0cmluZ0J1ZmZlcjo6Y3JlYXRlKGxlbmd0aCArIDEp
OwotICAgIGNoYXIqIGJ5dGVzID0gcmVzdWx0Lm1fYnVmZmVyLT5kYXRhKCk7CisgICAgY2hhciog
Ynl0ZXMgPSByZXN1bHQubV9idWZmZXItPm11dGFibGVEYXRhKCk7CiAgICAgYnl0ZXNbbGVuZ3Ro
XSA9ICdcMCc7CiAgICAgY2hhcmFjdGVyQnVmZmVyID0gYnl0ZXM7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBDU3RyaW5nOjpjb3B5QnVmZmVySWZOZWVkZWQoKQog
ICAgIGludCBsZW4gPSBtX2J1ZmZlci0+bGVuZ3RoKCk7CiAgICAgUmVmUHRyPENTdHJpbmdCdWZm
ZXI+IG1fdGVtcCA9IG1fYnVmZmVyOwogICAgIG1fYnVmZmVyID0gQ1N0cmluZ0J1ZmZlcjo6Y3Jl
YXRlKGxlbik7Ci0gICAgbWVtY3B5KG1fYnVmZmVyLT5kYXRhKCksIG1fdGVtcC0+ZGF0YSgpLCBs
ZW4pOworICAgIG1lbWNweShtX2J1ZmZlci0+bXV0YWJsZURhdGEoKSwgbV90ZW1wLT5kYXRhKCks
IGxlbik7CiB9CiAKIGJvb2wgb3BlcmF0b3I9PShjb25zdCBDU3RyaW5nJiBhLCBjb25zdCBDU3Ry
aW5nJiBiKQpAQCAtOTksMTcgKzk5LDQgQEAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IENTdHJpbmcm
IGEsIGNvbnN0IAogICAgIHJldHVybiAhc3RybmNtcChhLmRhdGEoKSwgYi5kYXRhKCksIG1pbihh
Lmxlbmd0aCgpLCBiLmxlbmd0aCgpKSk7CiB9CiAKLVBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBD
U3RyaW5nOjpyZWxlYXNlQnVmZmVyKCkKLXsKLSAgICBpZiAoIW1fYnVmZmVyKQotICAgICAgICBy
ZXR1cm4gMDsKLQotICAgIGNvcHlCdWZmZXJJZk5lZWRlZCgpOwotICAgICAgICAKLSAgICBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiByZXN1bHQgPSBtX2J1ZmZlci0+cmVsZWFzZUJ1ZmZlcigpOwotICAg
IG1fYnVmZmVyID0gMDsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVhc2UoKTsKLX0KLQotCi19Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBwbGF0Zm9ybS90ZXh0L0NTdHJpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBwbGF0Zm9ybS90ZXh0L0NTdHJpbmcuaAkocmV2aXNpb24gNDEwOTApCisrKyBw
bGF0Zm9ybS90ZXh0L0NTdHJpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtMzYsMTUgKzM2LDE1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIENTdHJpbmdCdWZmZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxDU3RyaW5nQnVmZmVyPiB7CiAgICAgcHVibGljOgotICAgICAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDU3RyaW5nQnVmZmVyPiBjcmVhdGUodW5zaWduZWQgbGVuZ3RoKSB7IHJldHVy
biBhZG9wdFJlZihuZXcgQ1N0cmluZ0J1ZmZlcihsZW5ndGgpKTsgfQotCi0gICAgICAgIGNoYXIq
IGRhdGEoKSB7IHJldHVybiBtX3ZlY3Rvci5kYXRhKCk7IH0KLSAgICAgICAgc2l6ZV90IGxlbmd0
aCgpIGNvbnN0IHsgcmV0dXJuIG1fdmVjdG9yLnNpemUoKTsgfQorICAgICAgICBjb25zdCBjaGFy
KiBkYXRhKCkgeyByZXR1cm4gbV92ZWN0b3IuZGF0YSgpOyB9CisgICAgICAgIHNpemVfdCBsZW5n
dGgoKSB7IHJldHVybiBtX3ZlY3Rvci5zaXplKCk7IH0KICAgICAgICAgCi0gICAgICAgIFBhc3NS
ZWZQdHI8U2hhcmVkQnVmZmVyPiByZWxlYXNlQnVmZmVyKCkgeyByZXR1cm4gU2hhcmVkQnVmZmVy
OjphZG9wdFZlY3RvcihtX3ZlY3Rvcik7IH0KLQogICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVu
ZCBjbGFzcyBDU3RyaW5nOworCisgICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPENTdHJpbmdCdWZm
ZXI+IGNyZWF0ZSh1bnNpZ25lZCBsZW5ndGgpIHsgcmV0dXJuIGFkb3B0UmVmKG5ldyBDU3RyaW5n
QnVmZmVyKGxlbmd0aCkpOyB9CiAgICAgICAgIENTdHJpbmdCdWZmZXIodW5zaWduZWQgbGVuZ3Ro
KSA6IG1fdmVjdG9yKGxlbmd0aCkgeyB9CisgICAgICAgIGNoYXIqIG11dGFibGVEYXRhKCkgeyBy
ZXR1cm4gbV92ZWN0b3IuZGF0YSgpOyB9CiAKICAgICAgICAgVmVjdG9yPGNoYXI+IG1fdmVjdG9y
OwogICAgIH07CkBAIC01Niw2ICs1Niw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Q1N0cmluZygpIHsgfQogICAgICAgICBDU3RyaW5nKGNvbnN0IGNoYXIqKTsKICAgICAgICAgQ1N0
cmluZyhjb25zdCBjaGFyKiwgdW5zaWduZWQgbGVuZ3RoKTsKKyAgICAgICAgQ1N0cmluZyhDU3Ry
aW5nQnVmZmVyKiBidWZmZXIpIDogbV9idWZmZXIoYnVmZmVyKSB7IH0KICAgICAgICAgc3RhdGlj
IENTdHJpbmcgbmV3VW5pbml0aWFsaXplZChzaXplX3QgbGVuZ3RoLCBjaGFyKiYgY2hhcmFjdGVy
QnVmZmVyKTsKIAogICAgICAgICBjb25zdCBjaGFyKiBkYXRhKCkgY29uc3Q7CkBAIC02Myw4ICs2
NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdW5zaWduZWQgbGVuZ3RoKCkgY29u
c3Q7CiAKICAgICAgICAgYm9vbCBpc051bGwoKSBjb25zdCB7IHJldHVybiAhbV9idWZmZXI7IH0K
LSAgICAgICAgCi0gICAgICAgIFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiByZWxlYXNlQnVmZmVy
KCk7CisKKyAgICAgICAgQ1N0cmluZ0J1ZmZlciogYnVmZmVyKCkgY29uc3QgeyByZXR1cm4gbV9i
dWZmZXIuZ2V0KCk7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIHZvaWQgY29weUJ1ZmZlcklm
TmVlZGVkKCk7Cg==
</data>
<flag name="review"
          id="13528"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>