<?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>37610</bug_id>
          
          <creation_ts>2010-04-14 14:37:33 -0700</creation_ts>
          <short_desc>[Qt] Syntax checking  in the QtScript cause a memory leak.</short_desc>
          <delta_ts>2010-04-14 20:08:03 -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>JavaScriptCore</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>Qt</keywords>
          <priority>P1</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>31863</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Jędrzej Nowacki">jedrzej.nowacki</reporter>
          <assigned_to name="Jędrzej Nowacki">jedrzej.nowacki</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jedrzej.nowacki</cc>
    
    <cc>kenneth</cc>
    
    <cc>kent.hansen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>212579</commentid>
    <comment_count>0</comment_count>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-04-14 14:37:33 -0700</bug_when>
    <thetext>Valgrind report few memory leaks in tst_QScriptEngine, connected with syntax checking and QScriptSyntaxCheckResultPrivate.  

==7133== 662 (384 direct, 278 indirect) bytes in 16 blocks are definitely lost in loss record 227 of 265                                                                                             
==7133==    at 0x4C221A7: malloc (vg_replace_malloc.c:195)                                                                                                                                           
==7133==    by 0x50BCB58: WTF::fastMalloc(unsigned long) (FastMalloc.cpp:249)                                                                                                                        
==7133==    by 0x50072FD: WTF::FastAllocBase::operator new(unsigned long) (FastAllocBase.h:96)                                                                                                       
==7133==    by 0x5020853: OpaqueJSString::create(unsigned short const*, unsigned int) (OpaqueJSString.h:45)                                                                                          
==7133==    by 0x50204B3: JSStringCreateWithUTF8CString (JSStringRef.cpp:50)                                                                                                                         
==7133==    by 0x4FFFF34: QScriptConverter::toString(QString const&amp;) (qscriptconverter_p.h:59)                                                                                                       
==7133==    by 0x5000B38: QScriptEnginePrivate::checkSyntax(QString const&amp;) (qscriptengine_p.cpp:45)                                                                                                 
==7133==    by 0x4FFFB0E: QScriptEngine::checkSyntax(QString const&amp;) (qscriptengine.cpp:60)                                                                                                          
==7133==    by 0x407F5E: tst_QScriptEngine::checkSyntax() (tst_qscriptengine.cpp:280)                                                                                                                
==7133==    by 0x409C55: tst_QScriptEngine::qt_metacall(QMetaObject::Call, int, void**) (tst_qscriptengine.moc:92)                                                                                   
==7133==    by 0x64BFF19: QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const (in /usr/lib/libQtCore.so.4.5.3)                                                                            
==7133==    by 0x64C070E: QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) (in /usr/lib/libQtCore.so.4.5.3)  

==6809== 256 (192 direct, 64 indirect) bytes in 8 blocks are definitely lost in loss record 200 of 265                                                                                               
==6809==    at 0x4C221A7: malloc (vg_replace_malloc.c:195)                                                                                                                                           
==6809==    by 0x50BCB50: WTF::fastMalloc(unsigned long) (FastMalloc.cpp:249)                                                                                                                        
==6809==    by 0x50072F5: WTF::FastAllocBase::operator new(unsigned long) (FastAllocBase.h:96)                                                                                                       
==6809==    by 0x502084B: OpaqueJSString::create(unsigned short const*, unsigned int) (OpaqueJSString.h:45)                                                                                          
==6809==    by 0x50204AB: JSStringCreateWithUTF8CString (JSStringRef.cpp:50)                                                                                                                         
==6809==    by 0x50026C9: QScriptConverter::toString(char const*) (qscriptconverter_p.h:63)                                                                                                          
==6809==    by 0x5006A1C: QScriptSyntaxCheckResultPrivate::errorLineNumber() const (qscriptsyntaxcheckresult.cpp:140)                                                                                
==6809==    by 0x5006807: QScriptSyntaxCheckResult::errorLineNumber() const (qscriptsyntaxcheckresult.cpp:94)                                                                                        
==6809==    by 0x408243: tst_QScriptEngine::checkSyntax() (tst_qscriptengine.cpp:293)                                                                                                                
==6809==    by 0x409C55: tst_QScriptEngine::qt_metacall(QMetaObject::Call, int, void**) (tst_qscriptengine.moc:92)                                                                                   
==6809==    by 0x64BFF19: QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const (in /usr/lib/libQtCore.so.4.5.3)                                                                            
==6809==    by 0x64C070E: QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) (in /usr/lib/libQtCore.so.4.5.3) 

==6809== 216 (72 direct, 144 indirect) bytes in 3 blocks are definitely lost in loss record 192 of 265                                                                                               
==6809==    at 0x4C221A7: malloc (vg_replace_malloc.c:195)                                                                                                                                           
==6809==    by 0x50BCB50: WTF::fastMalloc(unsigned long) (FastMalloc.cpp:249)                                                                                                                        
==6809==    by 0x50072F5: WTF::FastAllocBase::operator new(unsigned long) (FastAllocBase.h:96)                                                                                                       
==6809==    by 0x5023CE7: OpaqueJSString::create(JSC::UString const&amp;) (OpaqueJSString.cpp:38)                                                                                                        
==6809==    by 0x502202D: JSValueToStringCopy (JSValueRef.cpp:284)                                                                                                                                   
==6809==    by 0x50069C3: QScriptSyntaxCheckResultPrivate::errorMessage() const (qscriptsyntaxcheckresult.cpp:128)                                                                                   
==6809==    by 0x5006857: QScriptSyntaxCheckResult::errorMessage() const (qscriptsyntaxcheckresult.cpp:116)                                                                                          
==6809==    by 0x408551: tst_QScriptEngine::checkSyntax() (tst_qscriptengine.cpp:305)                                                                                                                
==6809==    by 0x409C55: tst_QScriptEngine::qt_metacall(QMetaObject::Call, int, void**) (tst_qscriptengine.moc:92)                                                                                   
==6809==    by 0x64BFF19: QMetaMethod::invoke(QObject*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) const (in /usr/lib/libQtCore.so.4.5.3)                                                                            
==6809==    by 0x64C070E: QMetaObject::invokeMethod(QObject*, char const*, Qt::ConnectionType, QGenericReturnArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument, QGenericArgument) (in /usr/lib/libQtCore.so.4.5.3)                                                               
==6809==    by 0x554405B: ??? (in /usr/lib/libQtTest.so.4.5.3)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212609</commentid>
    <comment_count>1</comment_count>
      <attachid>53373</attachid>
    <who name="Jędrzej Nowacki">jedrzej.nowacki</who>
    <bug_when>2010-04-14 15:17:25 -0700</bug_when>
    <thetext>Created attachment 53373
Fix v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212714</commentid>
    <comment_count>2</comment_count>
      <attachid>53373</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-14 20:07:58 -0700</bug_when>
    <thetext>Comment on attachment 53373
Fix v1

Clearing flags on attachment: 53373

Committed r57626: &lt;http://trac.webkit.org/changeset/57626&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>212715</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-14 20:08:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53373</attachid>
            <date>2010-04-14 15:17:25 -0700</date>
            <delta_ts>2010-04-14 20:07:58 -0700</delta_ts>
            <desc>Fix v1</desc>
            <filename>memleak.diff</filename>
            <type>text/plain</type>
            <size>3579</size>
            <attacher name="Jędrzej Nowacki">jedrzej.nowacki</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyBiL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCAzYzRiNzcxLi42NmViNjI2IDEwMDY0NAotLS0gYS9KYXZhU2NyaXB0Q29y
ZS9DaGFuZ2VMb2cKKysrIGIvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCkBAIC0yLDYgKzIsMjMg
QEAKIAogICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KIAorICAgICAgICBGaXgg
YSBmZXcgbWVtb3J5IGxlYWtzIGluIFFTY3JpcHRFbmdpbmUuCisKKyAgICAgICAgU3ludGF4IGNo
ZWNraW5nIGNhdXNlZCBtZW1vcnkgbGVhaywgbm90IGFsbCB0ZW1wb3JhcnkgdmFyaWFibGVzIHdl
cmUgcmVsZWFzZWQuCisKKyAgICAgICAgW1F0XSBTeW50YXggY2hlY2tpbmcgIGluIHRoZSBRdFNj
cmlwdCBjYXVzZSBhIG1lbW9yeSBsZWFrLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mzc2MTAKKworICAgICAgICAqIHF0L2FwaS9xc2NyaXB0ZW5naW5l
X3AuY3BwOgorICAgICAgICAoUVNjcmlwdEVuZ2luZVByaXZhdGU6OmNoZWNrU3ludGF4KToKKyAg
ICAgICAgKiBxdC9hcGkvcXNjcmlwdHN5bnRheGNoZWNrcmVzdWx0LmNwcDoKKyAgICAgICAgKFFT
Y3JpcHRTeW50YXhDaGVja1Jlc3VsdFByaXZhdGU6OmVycm9yTWVzc2FnZSk6CisgICAgICAgIChR
U2NyaXB0U3ludGF4Q2hlY2tSZXN1bHRQcml2YXRlOjplcnJvckxpbmVOdW1iZXIpOgorCisyMDEw
LTA0LTE0ICBKZWRyemVqIE5vd2Fja2kgIDxqZWRyemVqLm5vd2Fja2lAbm9raWEuY29tPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIEZpeCBtZW1vcnkg
bGVhayBpbnNpZGUgUVNjcmlwdEVuZ2luZVByaXZhdGU6Om1ha2VKU1ZhbHVlLgogCiAgICAgICAg
IFFTY3JpcHRFbmdpbmVQcml2YXRlOjptYWtlSlNWYWx1ZSBzaG91bGQgcmVsZWFzZSB0ZW1wb3Jh
cnkgSlNTdHJpbmdSZWYgdmFyaWFibGUuCmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0Q29yZS9xdC9h
cGkvcXNjcmlwdGVuZ2luZV9wLmNwcCBiL0phdmFTY3JpcHRDb3JlL3F0L2FwaS9xc2NyaXB0ZW5n
aW5lX3AuY3BwCmluZGV4IDg3M2U3YjUuLjM4MTg1YWIgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRD
b3JlL3F0L2FwaS9xc2NyaXB0ZW5naW5lX3AuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3F0L2Fw
aS9xc2NyaXB0ZW5naW5lX3AuY3BwCkBAIC00Miw4ICs0MiwxMiBAQCBRU2NyaXB0RW5naW5lUHJp
dmF0ZTo6flFTY3JpcHRFbmdpbmVQcml2YXRlKCkKIFFTY3JpcHRTeW50YXhDaGVja1Jlc3VsdFBy
aXZhdGUqIFFTY3JpcHRFbmdpbmVQcml2YXRlOjpjaGVja1N5bnRheChjb25zdCBRU3RyaW5nJiBw
cm9ncmFtKQogewogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uOwotICAgIGlmIChKU0NoZWNrU2Ny
aXB0U3ludGF4KG1fY29udGV4dCwgUVNjcmlwdENvbnZlcnRlcjo6dG9TdHJpbmcocHJvZ3JhbSks
IC8qIHVybCAqLyAwLCAvKiBzdGFydGluZyBsaW5lICovIDEsICZleGNlcHRpb24pKQorICAgIEpT
U3RyaW5nUmVmIHNvdXJjZSA9IFFTY3JpcHRDb252ZXJ0ZXI6OnRvU3RyaW5nKHByb2dyYW0pOwor
ICAgIGJvb2wgc3ludGF4SXNDb3JyZWN0ID0gSlNDaGVja1NjcmlwdFN5bnRheChtX2NvbnRleHQs
IHNvdXJjZSwgLyogdXJsICovIDAsIC8qIHN0YXJ0aW5nIGxpbmUgKi8gMSwgJmV4Y2VwdGlvbik7
CisgICAgSlNTdHJpbmdSZWxlYXNlKHNvdXJjZSk7CisgICAgaWYgKHN5bnRheElzQ29ycmVjdCkg
ewogICAgICAgICByZXR1cm4gbmV3IFFTY3JpcHRTeW50YXhDaGVja1Jlc3VsdFByaXZhdGUodGhp
cyk7CisgICAgfQogICAgIEpTVmFsdWVQcm90ZWN0KG1fY29udGV4dCwgZXhjZXB0aW9uKTsKICAg
ICByZXR1cm4gbmV3IFFTY3JpcHRTeW50YXhDaGVja1Jlc3VsdFByaXZhdGUodGhpcywgY29uc3Rf
Y2FzdDxKU09iamVjdFJlZj4oZXhjZXB0aW9uKSk7CiB9CmRpZmYgLS1naXQgYS9KYXZhU2NyaXB0
Q29yZS9xdC9hcGkvcXNjcmlwdHN5bnRheGNoZWNrcmVzdWx0LmNwcCBiL0phdmFTY3JpcHRDb3Jl
L3F0L2FwaS9xc2NyaXB0c3ludGF4Y2hlY2tyZXN1bHQuY3BwCmluZGV4IDIwODVmNWIuLjVjZjAy
ZWYgMTAwNjQ0Ci0tLSBhL0phdmFTY3JpcHRDb3JlL3F0L2FwaS9xc2NyaXB0c3ludGF4Y2hlY2ty
ZXN1bHQuY3BwCisrKyBiL0phdmFTY3JpcHRDb3JlL3F0L2FwaS9xc2NyaXB0c3ludGF4Y2hlY2ty
ZXN1bHQuY3BwCkBAIC0xMjQsOSArMTI0LDEzIEBAIFFTY3JpcHRTeW50YXhDaGVja1Jlc3VsdFBy
aXZhdGU6On5RU2NyaXB0U3ludGF4Q2hlY2tSZXN1bHRQcml2YXRlKCkKIAogUVN0cmluZyBRU2Ny
aXB0U3ludGF4Q2hlY2tSZXN1bHRQcml2YXRlOjplcnJvck1lc3NhZ2UoKSBjb25zdAogewotICAg
IGlmIChtX2V4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJuIFFTY3JpcHRDb252ZXJ0ZXI6OnRvU3Ry
aW5nKEpTVmFsdWVUb1N0cmluZ0NvcHkobV9lbmdpbmUtPmNvbnRleHQoKSwgbV9leGNlcHRpb24s
IC8qIGV4Y2VwdGlvbiAqLyAwKSk7Ci0gICAgcmV0dXJuIFFTdHJpbmcoKTsKKyAgICBpZiAoIW1f
ZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gUVN0cmluZygpOworCisgICAgSlNTdHJpbmdSZWYg
dG1wID0gSlNWYWx1ZVRvU3RyaW5nQ29weShtX2VuZ2luZS0+Y29udGV4dCgpLCBtX2V4Y2VwdGlv
biwgLyogZXhjZXB0aW9uICovIDApOworICAgIFFTdHJpbmcgbWVzc2FnZSA9IFFTY3JpcHRDb252
ZXJ0ZXI6OnRvU3RyaW5nKHRtcCk7CisgICAgSlNTdHJpbmdSZWxlYXNlKHRtcCk7CisgICAgcmV0
dXJuIG1lc3NhZ2U7CiB9CiAKIGludCBRU2NyaXB0U3ludGF4Q2hlY2tSZXN1bHRQcml2YXRlOjpl
cnJvckxpbmVOdW1iZXIoKSBjb25zdApAQCAtMTM0LDkgKzEzOCwxMSBAQCBpbnQgUVNjcmlwdFN5
bnRheENoZWNrUmVzdWx0UHJpdmF0ZTo6ZXJyb3JMaW5lTnVtYmVyKCkgY29uc3QKICAgICBpZiAo
IW1fZXhjZXB0aW9uKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgLy8gbV9leGNlcHRpb24gaXMg
YW4gaW5zdGFuY2Ugb2YgdGhlIEV4Y2VwdGlvbiBzbyBpdCBoYXMgImxpbmUiIGF0dHJpYnV0ZS4K
KyAgICBKU1N0cmluZ1JlZiBsaW5lQXR0ck5hbWUgPSBRU2NyaXB0Q29udmVydGVyOjp0b1N0cmlu
ZygibGluZSIpOwogICAgIEpTVmFsdWVSZWYgbGluZSA9IEpTT2JqZWN0R2V0UHJvcGVydHkobV9l
bmdpbmUtPmNvbnRleHQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fZXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgUVNjcmlwdENvbnZlcnRlcjo6dG9TdHJpbmcoImxpbmUiKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVBdHRyTmFtZSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV4Y2VwdGlvbnMgKi8wKTsKKyAgICBKU1N0cmlu
Z1JlbGVhc2UobGluZUF0dHJOYW1lKTsKICAgICByZXR1cm4gSlNWYWx1ZVRvTnVtYmVyKG1fZW5n
aW5lLT5jb250ZXh0KCksIGxpbmUsIC8qIGV4Y2VwdGlvbnMgKi8wKTsKIH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>