<?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>109792</bug_id>
          
          <creation_ts>2013-02-14 01:22:18 -0800</creation_ts>
          <short_desc>Vector&lt;T, inlineCapacity&gt;::data() with size 0, returns null when inlineCapacity=0 and !null otherwise</short_desc>
          <delta_ts>2022-08-06 14:22:06 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>LATER</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="Eric Seidel (no email)">eric</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abarth</cc>
    
    <cc>ahmad.saleem792</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>bfulgham</cc>
    
    <cc>darin</cc>
    
    <cc>mjs</cc>
    
    <cc>rniwa</cc>
    
    <cc>tonyg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>832828</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-14 01:22:18 -0800</bug_when>
    <thetext>Vector&lt;T, inlineCapacity&gt;::data() with size 0, returns null when inlineCapacity=0 and !null otherwise

This is inconsistent, and causes confusion when converting Vector&lt;UChar&gt; to Strings.  See bug 109784</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832831</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-14 01:30:29 -0800</bug_when>
    <thetext>This should be relatively easy to solve, we just have to be more careful to set m_buffer to 0 in the inlineCapacity case when size == 0.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832835</commentid>
    <comment_count>2</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2013-02-14 01:31:55 -0800</bug_when>
    <thetext>Of course, once we fix this, we may need to fix bug 109784 in a different way for the threaded parser, but that&apos;s easy to do. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832857</commentid>
    <comment_count>3</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-02-14 01:46:42 -0800</bug_when>
    <thetext>What do you think the correct behavior should be, always null or never null?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832860</commentid>
    <comment_count>4</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-14 01:49:28 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; What do you think the correct behavior should be, always null or never null?

I think undefined behavior could be okay, but always null would be more useful in practice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832865</commentid>
    <comment_count>5</comment_count>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2013-02-14 02:02:43 -0800</bug_when>
    <thetext>Looking at bug 109784, it seems to me that the right behavior for creating a String from an empty Vector is to get an empty string, not a null string. I am not sure if that has implications for this Vector issue.

Originally the design intent of Vector was that you should not rely on data() when length() is 0.

Making data() be always null is possible, but taking a quick look at the code, it would add extra branches to a number of VectorBase methods for the non-inline case (or else a branch in data() itself).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>832868</commentid>
    <comment_count>6</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-14 02:10:12 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Looking at bug 109784, it seems to me that the right behavior for creating a String from an empty Vector is to get an empty string, not a null string. I am not sure if that has implications for this Vector issue.

I made a comment on that bug regarding that.

&gt; Originally the design intent of Vector was that you should not rely on data() when length() is 0.
&gt; 
&gt; Making data() be always null is possible, but taking a quick look at the code, it would add extra branches to a number of VectorBase methods for the non-inline case (or else a branch in data() itself).

Does making it null in debug sounds like an acceptable compromise to you?

I would prefer it if people could not rely on that behavior, like in the case of Vector-&gt;String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834631</commentid>
    <comment_count>7</comment_count>
      <attachid>188691</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-15 21:47:41 -0800</bug_when>
    <thetext>Created attachment 188691
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>834632</commentid>
    <comment_count>8</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-02-15 21:49:04 -0800</bug_when>
    <thetext>Quick stab at it, it probably does not compile.
I think we may be able to make the change while reducing the number of branches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889371</commentid>
    <comment_count>9</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2022-08-06 06:50:35 -0700</bug_when>
    <thetext>I can still see references to this in the Webkit Github source e.g.:

https://github.com/WebKit/WebKit/blob/f407fbb287465a0ff68442eb7297862518e211cc/Source/WTF/wtf/Vector.h#L427

I think this patch need to rebased to land. Appreciate if someone is willing to work else I think we can mark this as &quot;RESOLVED LATER&quot;. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889404</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2022-08-06 14:22:06 -0700</bug_when>
    <thetext>Later.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>188691</attachid>
            <date>2013-02-15 21:47:41 -0800</date>
            <delta_ts>2013-02-15 21:47:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109792-20130215214407.patch</filename>
            <type>text/plain</type>
            <size>5310</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQzMDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA4YjM2Nzg3NjAxOTgyMDU5NTlkNWVk
ZWE3NjJiZTAxNjdiMTA5NGMuLmFlYmE3MTFlZmI3MWQ5MzJkZGVhMWM1NThmNGQyZjcxZDYxMjQz
ZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTMtMDItMTUgIEJlbmphbWluIFBvdWxhaW4gIDxi
ZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eT46
OmRhdGEoKSB3aXRoIHNpemUgMCwgcmV0dXJucyBudWxsIHdoZW4gaW5saW5lQ2FwYWNpdHk9MCBh
bmQgIW51bGwgb3RoZXJ3aXNlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDk3OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXb3JrIGluIHByb2dyZXNzLgorCisgICAgICAgICogd3RmL1NlZ21lbnRlZFZl
Y3Rvci5oOgorICAgICAgICAoV1RGOjpTZWdtZW50ZWRWZWN0b3I6OlNlZ21lbnRlZFZlY3Rvcik6
CisgICAgICAgIChXVEY6OlNlZ21lbnRlZFZlY3Rvcjo6Y2xlYXIpOgorICAgICAgICAqIHd0Zi9W
ZWN0b3IuaDoKKyAgICAgICAgKFdURjo6VmVjdG9yQnVmZmVyOjpWZWN0b3JCdWZmZXIpOgorICAg
ICAgICAoV1RGOjpWZWN0b3JCdWZmZXI6OmRlYWxsb2NhdGVCdWZmZXIpOgorICAgICAgICAoV1RG
OjpWZWN0b3JCdWZmZXI6OnJlbGVhc2VCdWZmZXIpOgorICAgICAgICAoV1RGOjo6OnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkpOgorICAgICAgICAoV1RGOjo6OnNocmlua0NhcGFjaXR5KToKKwogMjAx
My0wMi0xNSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgVmVjdG9yOjpkYXRhU2xvdCgpLCBpdCBoYXMgbm8gaW1wbGVtZW50YXRpb24KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL1NlZ21lbnRlZFZlY3Rvci5oIGIvU291cmNlL1dURi93
dGYvU2VnbWVudGVkVmVjdG9yLmgKaW5kZXggYjViZjk5OTBhZmFlZDIwMDdkZjczZGFmODViZDU3
NDRhZTNlYzY3Zi4uMmEyMDc4OTJkMmQ1NmNlYTI1ZTYwNDk3YzkxZTI2N2Y5M2UyYzQ1OSAxMDA2
NDQKLS0tIGEvU291cmNlL1dURi93dGYvU2VnbWVudGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvU2VnbWVudGVkVmVjdG9yLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0
IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwOCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTExMCw2ICsxMTAsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgU2VnbWVudGVkVmVjdG9yKCkKICAgICAgICAgICAgIDogbV9zaXplKDApCiAgICAg
ICAgIHsKKyAgICAgICAgICAgIG1faW5saW5lU2VnbWVudC5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KFNlZ21lbnRTaXplKTsKICAgICAgICAgICAgIG1fc2VnbWVudHMuYXBwZW5kKCZtX2lubGluZVNl
Z21lbnQpOwogICAgICAgICB9CiAKQEAgLTE4OSw2ICsxOTAsNyBAQCBuYW1lc3BhY2UgV1RGIHsK
ICAgICAgICAgICAgIGRlbGV0ZUFsbFNlZ21lbnRzKCk7CiAgICAgICAgICAgICBtX3NlZ21lbnRz
LnJlc2l6ZSgxKTsKICAgICAgICAgICAgIG1faW5saW5lU2VnbWVudC5jbGVhcigpOworICAgICAg
ICAgICAgbV9pbmxpbmVTZWdtZW50LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoU2VnbWVudFNpemUp
OwogICAgICAgICAgICAgbV9zaXplID0gMDsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9WZWN0b3IuaCBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCmluZGV4IDhmOGNl
ODljNTE0YmQ4MWM5NzVhZDJlMDdhMzMzM2U4ZTQ1MjQ5ZTUuLjM2MjFkZjUwM2JlYzA1N2FjZjg1
ZmM4NmRhZWRkODkxMGQ2YmI1MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5o
CisrKyBiL1NvdXJjZS9XVEYvd3RmL1ZlY3Rvci5oCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICogIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogIFRoaXMgbGlicmFyeSBp
cyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqICBtb2Rp
ZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpA
QCAtMzIyLDEyICszMjIsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgewogICAgICAgICB9
CiAKLSAgICAgICAgVmVjdG9yQnVmZmVyQmFzZShUKiBidWZmZXIsIHNpemVfdCBjYXBhY2l0eSkK
LSAgICAgICAgICAgIDogbV9idWZmZXIoYnVmZmVyKQotICAgICAgICAgICAgLCBtX2NhcGFjaXR5
KGNhcGFjaXR5KQotICAgICAgICB7Ci0gICAgICAgIH0KLQogICAgICAgICB+VmVjdG9yQnVmZmVy
QmFzZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCB3b3VsZCBiZSBuaWNl
IHRvIGZpbmQgYSB3YXkgdG8gQVNTRVJUIHRoYXQgbV9idWZmZXIgaGFzbid0IGxlYWtlZCBoZXJl
LgpAQCAtMzY3LDggKzM2MSw2IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAgc3RkOjpz
d2FwKG1fYnVmZmVyLCBvdGhlci5tX2J1ZmZlcik7CiAgICAgICAgICAgICBzdGQ6OnN3YXAobV9j
YXBhY2l0eSwgb3RoZXIubV9jYXBhY2l0eSk7CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAg
IHZvaWQgcmVzdG9yZUlubGluZUJ1ZmZlcklmTmVlZGVkKCkgeyB9CiAKICAgICAgICAgdXNpbmcg
QmFzZTo6YWxsb2NhdGVCdWZmZXI7CiAgICAgICAgIHVzaW5nIEJhc2U6OnRyeUFsbG9jYXRlQnVm
ZmVyOwpAQCAtMzkyLDE1ICszODQsMTMgQEAgbmFtZXNwYWNlIFdURiB7CiAgICAgICAgIHR5cGVk
ZWYgVmVjdG9yQnVmZmVyQmFzZTxUPiBCYXNlOwogICAgIHB1YmxpYzoKICAgICAgICAgVmVjdG9y
QnVmZmVyKCkKLSAgICAgICAgICAgIDogQmFzZShpbmxpbmVCdWZmZXIoKSwgaW5saW5lQ2FwYWNp
dHkpCiAgICAgICAgIHsKICAgICAgICAgfQogCiAgICAgICAgIFZlY3RvckJ1ZmZlcihzaXplX3Qg
Y2FwYWNpdHkpCi0gICAgICAgICAgICA6IEJhc2UoaW5saW5lQnVmZmVyKCksIGlubGluZUNhcGFj
aXR5KQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoY2FwYWNpdHkgPiBpbmxpbmVDYXBhY2l0
eSkKLSAgICAgICAgICAgICAgICBCYXNlOjphbGxvY2F0ZUJ1ZmZlcihjYXBhY2l0eSk7CisgICAg
ICAgICAgICBpZiAoY2FwYWNpdHkpCisgICAgICAgICAgICAgICAgYWxsb2NhdGVCdWZmZXIoY2Fw
YWNpdHkpOwogICAgICAgICB9CiAKICAgICAgICAgflZlY3RvckJ1ZmZlcigpCkBAIC00MzAsOCAr
NDIwLDEwIEBAIG5hbWVzcGFjZSBXVEYgewogCiAgICAgICAgIHZvaWQgZGVhbGxvY2F0ZUJ1ZmZl
cihUKiBidWZmZXJUb0RlYWxsb2NhdGUpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChidWZm
ZXJUb0RlYWxsb2NhdGUgPT0gaW5saW5lQnVmZmVyKCkpCisgICAgICAgICAgICBpZiAoYnVmZmVy
VG9EZWFsbG9jYXRlID09IGlubGluZUJ1ZmZlcigpKSB7CisgICAgICAgICAgICAgICAgbV9jYXBh
Y2l0eSA9IDA7CiAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQogICAgICAg
ICAgICAgQmFzZTo6ZGVhbGxvY2F0ZUJ1ZmZlcihidWZmZXJUb0RlYWxsb2NhdGUpOwogICAgICAg
ICB9CiAKQEAgLTQ2OCwyMSArNDYwLDE1IEBAIG5hbWVzcGFjZSBXVEYgewogICAgICAgICAgICAg
fQogICAgICAgICB9CiAKLSAgICAgICAgdm9pZCByZXN0b3JlSW5saW5lQnVmZmVySWZOZWVkZWQo
KQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobV9idWZmZXIpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgbV9idWZmZXIgPSBpbmxpbmVCdWZmZXIoKTsKLSAgICAgICAg
ICAgIG1fY2FwYWNpdHkgPSBpbmxpbmVDYXBhY2l0eTsKLSAgICAgICAgfQotCiAgICAgICAgIHVz
aW5nIEJhc2U6OmJ1ZmZlcjsKICAgICAgICAgdXNpbmcgQmFzZTo6Y2FwYWNpdHk7CiAKICAgICAg
ICAgVCogcmVsZWFzZUJ1ZmZlcigpCiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmIChidWZmZXIo
KSA9PSBpbmxpbmVCdWZmZXIoKSkKKyAgICAgICAgICAgIGlmIChidWZmZXIoKSA9PSBpbmxpbmVC
dWZmZXIoKSkgeworICAgICAgICAgICAgICAgIG1fY2FwYWNpdHkgPSAwOwogICAgICAgICAgICAg
ICAgIHJldHVybiAwOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIEJhc2U6OnJl
bGVhc2VCdWZmZXIoKTsKICAgICAgICAgfQogCkBAIC05MjAsOSArOTA2LDcgQEAgbmFtZXNwYWNl
IFdURiB7CiAgICAgaW5saW5lIHZvaWQgVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5Pjo6cmVzZXJ2
ZUluaXRpYWxDYXBhY2l0eShzaXplX3QgaW5pdGlhbENhcGFjaXR5KQogICAgIHsKICAgICAgICAg
QVNTRVJUKCFtX3NpemUpOwotICAgICAgICBBU1NFUlQoY2FwYWNpdHkoKSA9PSBpbmxpbmVDYXBh
Y2l0eSk7Ci0gICAgICAgIGlmIChpbml0aWFsQ2FwYWNpdHkgPiBpbmxpbmVDYXBhY2l0eSkKLSAg
ICAgICAgICAgIG1fYnVmZmVyLmFsbG9jYXRlQnVmZmVyKGluaXRpYWxDYXBhY2l0eSk7CisgICAg
ICAgIG1fYnVmZmVyLmFsbG9jYXRlQnVmZmVyKGluaXRpYWxDYXBhY2l0eSk7CiAgICAgfQogICAg
IAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHNpemVfdCBpbmxpbmVDYXBhY2l0eT4KQEAgLTk0
OCw3ICs5MzIsNiBAQCBuYW1lc3BhY2UgV1RGIHsKICAgICAgICAgfQogCiAgICAgICAgIG1fYnVm
ZmVyLmRlYWxsb2NhdGVCdWZmZXIob2xkQnVmZmVyKTsKLSAgICAgICAgbV9idWZmZXIucmVzdG9y
ZUlubGluZUJ1ZmZlcklmTmVlZGVkKCk7CiAgICAgfQogCiAgICAgLy8gVGVtcGxhdGl6aW5nIHRo
ZXNlIGlzIGJldHRlciB0aGFuIGp1c3QgbGV0dGluZyB0aGUgY29udmVyc2lvbiBoYXBwZW4gaW1w
bGljaXRseSwK
</data>

          </attachment>
      

    </bug>

</bugzilla>