<?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>51367</bug_id>
          
          <creation_ts>2010-12-20 17:40:41 -0800</creation_ts>
          <short_desc>Deallocate GregorianDateTime.timeZone (if allocated) when copying so that we don&apos;t leak memory.</short_desc>
          <delta_ts>2010-12-21 13:22:42 -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>Web Template Framework</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="Daniel Bates">dbates</reporter>
          <assigned_to name="Daniel Bates">dbates</assigned_to>
          <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>eric</cc>
    
    <cc>ggaren</cc>
    
    <cc>staikos</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>324678</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-20 17:40:41 -0800</bug_when>
    <thetext>When copying a GregorianDateTime object B to A using GregorianDateTime.copyFrom() we don&apos;t deallocate the timeZone of A before allocating a new timeZone buffer and copying the timeZone of B. Hence, we are leaking memory.

Instead, we should deallocate the timeZone buffer of A then allocate a new timeZone buffer for A and copy the timeZone from B into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324680</commentid>
    <comment_count>1</comment_count>
      <attachid>77060</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-20 17:43:58 -0800</bug_when>
    <thetext>Created attachment 77060
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324684</commentid>
    <comment_count>2</comment_count>
      <attachid>77060</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-20 18:25:28 -0800</bug_when>
    <thetext>Comment on attachment 77060
Patch

Can&apos;t we use an OwnArrayPtr here?  That would be much cleaner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324685</commentid>
    <comment_count>3</comment_count>
      <attachid>77060</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2010-12-20 18:26:31 -0800</bug_when>
    <thetext>Comment on attachment 77060
Patch

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

&gt; JavaScriptCore/wtf/DateMath.h:204
&gt; +        delete [] timeZone;

should we also set it to &apos;0&apos;, in case if (rhs.timeZone) fails?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324741</commentid>
    <comment_count>4</comment_count>
      <attachid>77077</attachid>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-20 20:06:15 -0800</bug_when>
    <thetext>Created attachment 77077
Patch

Updated patch based on Eric Seidel&apos;s suggestion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324742</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-20 20:08:02 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 77060 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77060&amp;action=review
&gt; 
&gt; &gt; JavaScriptCore/wtf/DateMath.h:204
&gt; &gt; +        delete [] timeZone;
&gt; 
&gt; should we also set it to &apos;0&apos;, in case if (rhs.timeZone) fails?

Notice, we do this by line 209 in &lt;http://trac.webkit.org/browser/trunk/JavaScriptCore/wtf/DateMath.h?rev=72884#L209&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324745</commentid>
    <comment_count>6</comment_count>
      <attachid>77077</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-20 20:15:40 -0800</bug_when>
    <thetext>Comment on attachment 77077
Patch

OK... so now I wonder why we wouldn&apos;t just use Vector&lt;char&gt; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324746</commentid>
    <comment_count>7</comment_count>
      <attachid>77077</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-20 20:16:17 -0800</bug_when>
    <thetext>Comment on attachment 77077
Patch

This is strictly better than what we have, so OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324758</commentid>
    <comment_count>8</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-20 20:47:13 -0800</bug_when>
    <thetext>Attachment 77077 did not build on win:
Build output: http://queues.webkit.org/results/7292081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325087</commentid>
    <comment_count>9</comment_count>
      <attachid>77077</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-12-21 11:18:42 -0800</bug_when>
    <thetext>Comment on attachment 77077
Patch

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

Should find out why the Windows build broke.

&gt; JavaScriptCore/wtf/DateMath.cpp:1132
&gt; -    tm.timeZone = NULL;
&gt; +    tm.timeZone.clear();

Side note: The most modern idiom for this is to assign to nullptr. We are going to deprecate clear().

&gt; JavaScriptCore/wtf/DateMath.h:202
&gt; +            timeZone.set(new char[inZoneSize]);

The most modern idiom for this is:

    timeZone = adoptArrayPtr(new char[inZoneSize]);

We are going to deprecate set soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325101</commentid>
    <comment_count>10</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-21 11:28:02 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 77077 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=77077&amp;action=review
&gt; 
&gt; Should find out why the Windows build broke.

Will look into and fix before landing.

&gt; 
&gt; &gt; JavaScriptCore/wtf/DateMath.cpp:1132
&gt; &gt; -    tm.timeZone = NULL;
&gt; &gt; +    tm.timeZone.clear();
&gt; 
&gt; Side note: The most modern idiom for this is to assign to nullptr. We are going to deprecate clear().

Will change.

&gt; 
&gt; &gt; JavaScriptCore/wtf/DateMath.h:202
&gt; &gt; +            timeZone.set(new char[inZoneSize]);
&gt; 
&gt; The most modern idiom for this is:
&gt; 
&gt;     timeZone = adoptArrayPtr(new char[inZoneSize]);

Will change.

&gt; 
&gt; We are going to deprecate set soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>325169</commentid>
    <comment_count>11</comment_count>
    <who name="Daniel Bates">dbates</who>
    <bug_when>2010-12-21 13:22:42 -0800</bug_when>
    <thetext>Committed r74424: &lt;http://trac.webkit.org/changeset/74424&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77060</attachid>
            <date>2010-12-20 17:43:58 -0800</date>
            <delta_ts>2010-12-20 20:06:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug51367.patch</filename>
            <type>text/plain</type>
            <size>1164</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0Mzc3KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMTItMjAgIERhbmllbCBC
YXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERlYWxsb2NhdGUgR3JlZ29yaWFuRGF0ZVRpbWUudGltZVpvbmUgKGlm
IGFsbG9jYXRlZCkgd2hlbiBjb3B5aW5nIHNvIHRoYXQgd2UgZG9uJ3QgbGVhayBtZW1vcnkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTM2NworCisg
ICAgICAgIFBhdGNoIGJ5IEdlb3JnZSBTdGFpa29zLgorCisgICAgICAgICogd3RmL0RhdGVNYXRo
Lmg6CisgICAgICAgIChKU0M6OkdyZWdvcmlhbkRhdGVUaW1lOjpjb3B5RnJvbSk6CisKIDIwMTAt
MTItMjAgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHZW9mZnJleSBHYXJlbi4KSW5kZXg6IEphdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCShyZXZpc2lvbiA3
NDM3NSkKKysrIEphdmFTY3JpcHRDb3JlL3d0Zi9EYXRlTWF0aC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDEsNiArMjAxLDcgQEAgc3RydWN0IEdyZWdvcmlhbkRhdGVUaW1lIDogTm9uY29weWFibGUg
ewogICAgICAgICB5ZWFyID0gcmhzLnllYXI7CiAgICAgICAgIGlzRFNUID0gcmhzLmlzRFNUOwog
ICAgICAgICB1dGNPZmZzZXQgPSByaHMudXRjT2Zmc2V0OworICAgICAgICBkZWxldGUgW10gdGlt
ZVpvbmU7CiAgICAgICAgIGlmIChyaHMudGltZVpvbmUpIHsKICAgICAgICAgICAgIGludCBpblpv
bmVTaXplID0gc3RybGVuKHJocy50aW1lWm9uZSkgKyAxOwogICAgICAgICAgICAgdGltZVpvbmUg
PSBuZXcgY2hhcltpblpvbmVTaXplXTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77077</attachid>
            <date>2010-12-20 20:06:15 -0800</date>
            <delta_ts>2010-12-21 11:18:42 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>Bug51367_1.patch</filename>
            <type>text/plain</type>
            <size>3774</size>
            <attacher name="Daniel Bates">dbates</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDc0Mzg0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMTItMjAgIERhbmllbCBC
YXRlcyAgPGRiYXRlc0ByaW0uY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIERlYWxsb2NhdGUgR3JlZ29yaWFuRGF0ZVRpbWUudGltZVpvbmUgKGlm
IGFsbG9jYXRlZCkgd2hlbiBjb3B5aW5nIHNvIHRoYXQgd2UgZG9uJ3QgbGVhayBtZW1vcnkuCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTM2NworCisg
ICAgICAgIEluc3BpcmVkIGJ5IGEgcGF0Y2ggYnkgR2VvcmdlIFN0YWlrb3MuCisKKyAgICAgICAg
KiB3dGYvRGF0ZU1hdGguY3BwOgorICAgICAgICAoSlNDOjptc1RvR3JlZ29yaWFuRGF0ZVRpbWUp
OiBNb2RpZmllZCB0byBjYWxsIE93blB0ckFycmF5OjpjbGVhcigpIGluc3RlYWQgb2Ygc2V0dGlu
ZyB0aGUgcG9pbnRlciB0byAwLgorICAgICAgICAqIHd0Zi9EYXRlTWF0aC5oOiBDaGFuZ2UgdGlt
ZVpvbmUgdG8gdHlwZSBPd25BcnJheVB0cjxjaGFyPjsgUmVtb3ZlZCBkZXN0cnVjdG9yIHNpbmNl
IGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCisgICAgICAgIChKU0M6OkdyZWdvcmlhbkRhdGVUaW1l
OjpHcmVnb3JpYW5EYXRlVGltZSk6IE1vZGlmaWVkIHRvIHVzZSBPd25QdHJBcnJheSBzZW1hbnRp
Y3MgZm9yIHRpbWVab25lLgorICAgICAgICAoSlNDOjpHcmVnb3JpYW5EYXRlVGltZTo6b3BlcmF0
b3IgdG0pOiBEaXR0by4KKyAgICAgICAgKEpTQzo6R3JlZ29yaWFuRGF0ZVRpbWU6OmNvcHlGcm9t
KTogRGl0dG8uCisKIDIwMTAtMTItMjAgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hA
YXBwbGUuY29tPgogCiAgICAgICAgIFBQQyBidWlsZCBmaXg7IHN0b3AgdXNpbmcgc3RkOjpzd2Fw
IG9uIFBhZ2VBbGxvY2F0aW9uL1BhZ2VSZXNlcnZhdGlvbiwKSW5kZXg6IEphdmFTY3JpcHRDb3Jl
L3d0Zi9EYXRlTWF0aC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gSmF2YVNjcmlwdENvcmUvd3RmL0RhdGVN
YXRoLmNwcAkocmV2aXNpb24gNzQzNzUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGgu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTI5LDcgKzExMjksNyBAQCB2b2lkIG1zVG9HcmVnb3Jp
YW5EYXRlVGltZShFeGVjU3RhdGUqIGV4CiAgICAgdG0ueWVhciAgICAgPSAgeWVhciAtIDE5MDA7
CiAgICAgdG0uaXNEU1QgICAgPSAgZHN0T2ZmICE9IDAuMDsKICAgICB0bS51dGNPZmZzZXQgPSBz
dGF0aWNfY2FzdDxsb25nPigoZHN0T2ZmICsgdXRjT2ZmKSAvIFdURjo6bXNQZXJTZWNvbmQpOwot
ICAgIHRtLnRpbWVab25lID0gTlVMTDsKKyAgICB0bS50aW1lWm9uZS5jbGVhcigpOwogfQogCiBk
b3VibGUgcGFyc2VEYXRlRnJvbU51bGxUZXJtaW5hdGVkQ2hhcmFjdGVycyhFeGVjU3RhdGUqIGV4
ZWMsIGNvbnN0IGNoYXIqIGRhdGVTdHJpbmcpCkluZGV4OiBKYXZhU2NyaXB0Q29yZS93dGYvRGF0
ZU1hdGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAkocmV2
aXNpb24gNzQzNzUpCisrKyBKYXZhU2NyaXB0Q29yZS93dGYvRGF0ZU1hdGguaAkod29ya2luZyBj
b3B5KQpAQCAtNDcsNiArNDcsNyBAQAogI2luY2x1ZGUgPHRpbWUuaD4KICNpbmNsdWRlIDx3dGYv
Q3VycmVudFRpbWUuaD4KICNpbmNsdWRlIDx3dGYvTm9uY29weWFibGUuaD4KKyNpbmNsdWRlIDx3
dGYvT3duQXJyYXlQdHIuaD4KICNpbmNsdWRlIDx3dGYvVW51c2VkUGFyYW0uaD4KIAogbmFtZXNw
YWNlIFdURiB7CkBAIC0xMzIsMTEgKzEzMyw2IEBAIHN0cnVjdCBHcmVnb3JpYW5EYXRlVGltZSA6
IE5vbmNvcHlhYmxlIHsKICAgICB7CiAgICAgfQogCi0gICAgfkdyZWdvcmlhbkRhdGVUaW1lKCkK
LSAgICB7Ci0gICAgICAgIGRlbGV0ZSBbXSB0aW1lWm9uZTsKLSAgICB9Ci0KICAgICBHcmVnb3Jp
YW5EYXRlVGltZShFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IHRtJiBpblRtKQogICAgICAgICA6IHNl
Y29uZChpblRtLnRtX3NlYykKICAgICAgICAgLCBtaW51dGUoaW5UbS50bV9taW4pCkBAIC0xNTcs
OCArMTUzLDggQEAgc3RydWN0IEdyZWdvcmlhbkRhdGVUaW1lIDogTm9uY29weWFibGUgewogCiAj
aWYgSEFWRShUTV9aT05FKQogICAgICAgICBpbnQgaW5ab25lU2l6ZSA9IHN0cmxlbihpblRtLnRt
X3pvbmUpICsgMTsKLSAgICAgICAgdGltZVpvbmUgPSBuZXcgY2hhcltpblpvbmVTaXplXTsKLSAg
ICAgICAgc3RybmNweSh0aW1lWm9uZSwgaW5UbS50bV96b25lLCBpblpvbmVTaXplKTsKKyAgICAg
ICAgdGltZVpvbmUuc2V0KG5ldyBjaGFyW2luWm9uZVNpemVdKTsKKyAgICAgICAgc3RybmNweSh0
aW1lWm9uZS5nZXQoKSwgaW5UbS50bV96b25lLCBpblpvbmVTaXplKTsKICNlbHNlCiAgICAgICAg
IHRpbWVab25lID0gMDsKICNlbmRpZgpAQCAtMTgzLDcgKzE3OSw3IEBAIHN0cnVjdCBHcmVnb3Jp
YW5EYXRlVGltZSA6IE5vbmNvcHlhYmxlIHsKICAgICAgICAgcmV0LnRtX2dtdG9mZiA9IHN0YXRp
Y19jYXN0PGxvbmc+KHV0Y09mZnNldCk7CiAjZW5kaWYKICNpZiBIQVZFKFRNX1pPTkUpCi0gICAg
ICAgIHJldC50bV96b25lID0gdGltZVpvbmU7CisgICAgICAgIHJldC50bV96b25lID0gdGltZVpv
bmUuZ2V0KCk7CiAjZW5kaWYKIAogICAgICAgICByZXR1cm4gcmV0OwpAQCAtMjAyLDExICsxOTgs
MTEgQEAgc3RydWN0IEdyZWdvcmlhbkRhdGVUaW1lIDogTm9uY29weWFibGUgewogICAgICAgICBp
c0RTVCA9IHJocy5pc0RTVDsKICAgICAgICAgdXRjT2Zmc2V0ID0gcmhzLnV0Y09mZnNldDsKICAg
ICAgICAgaWYgKHJocy50aW1lWm9uZSkgewotICAgICAgICAgICAgaW50IGluWm9uZVNpemUgPSBz
dHJsZW4ocmhzLnRpbWVab25lKSArIDE7Ci0gICAgICAgICAgICB0aW1lWm9uZSA9IG5ldyBjaGFy
W2luWm9uZVNpemVdOwotICAgICAgICAgICAgc3RybmNweSh0aW1lWm9uZSwgcmhzLnRpbWVab25l
LCBpblpvbmVTaXplKTsKKyAgICAgICAgICAgIGludCBpblpvbmVTaXplID0gc3RybGVuKHJocy50
aW1lWm9uZS5nZXQoKSkgKyAxOworICAgICAgICAgICAgdGltZVpvbmUuc2V0KG5ldyBjaGFyW2lu
Wm9uZVNpemVdKTsKKyAgICAgICAgICAgIHN0cm5jcHkodGltZVpvbmUuZ2V0KCksIHJocy50aW1l
Wm9uZS5nZXQoKSwgaW5ab25lU2l6ZSk7CiAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgdGlt
ZVpvbmUgPSAwOworICAgICAgICAgICAgdGltZVpvbmUuY2xlYXIoKTsKICAgICB9CiAKICAgICBp
bnQgc2Vjb25kOwpAQCAtMjE5LDcgKzIxNSw3IEBAIHN0cnVjdCBHcmVnb3JpYW5EYXRlVGltZSA6
IE5vbmNvcHlhYmxlIHsKICAgICBpbnQgeWVhcjsKICAgICBpbnQgaXNEU1Q7CiAgICAgaW50IHV0
Y09mZnNldDsKLSAgICBjaGFyKiB0aW1lWm9uZTsKKyAgICBPd25BcnJheVB0cjxjaGFyPiB0aW1l
Wm9uZTsKIH07CiAKIHN0YXRpYyBpbmxpbmUgaW50IGdtdG9mZnNldChjb25zdCBHcmVnb3JpYW5E
YXRlVGltZSYgdCkK
</data>
<flag name="review"
          id="68120"
          type_id="1"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>