Fix some memory leaks in the compiler
authorChris Adams <christopher.adams@nokia.com>
Tue, 2 Aug 2011 05:41:22 +0000 (15:41 +1000)
committerQt by Nokia <qt-info@nokia.com>
Sun, 4 Sep 2011 23:31:08 +0000 (01:31 +0200)
Task-number: QTBUG-17770
Change-Id: I6d9d357bf529a9a3f414182fb6a818ddedda8e18
Reviewed-on: http://codereview.qt.nokia.com/2487
Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com>
Reviewed-by: Michael Brasser <michael.brasser@nokia.com>

src/declarative/qml/qdeclarativebinding.cpp
src/declarative/qml/qdeclarativeexpression.cpp
tests/auto/declarative/qdeclarativeecmascript/tst_qdeclarativeecmascript.cpp

index d817990..9a69a6b 100644 (file)
@@ -243,6 +243,8 @@ QDeclarativeBinding::createBinding(Identifier id, QObject *obj, QDeclarativeCont
         cdata = typeData->compiledData();
     }
     QDeclarativeBinding *rv = cdata ? new QDeclarativeBinding(cdata->primitives.at(id), true, obj, ctxtdata, url, lineNumber, parent) : 0;
+    if (cdata)
+        cdata->release();
     if (typeData)
         typeData->release();
     return rv;
index a24d469..4f6a719 100644 (file)
@@ -256,6 +256,8 @@ QDeclarativeExpression::QDeclarativeExpression(const QDeclarativeScriptString &s
         else
            defaultConstruction = true;
 
+        if (cdata)
+            cdata->release();
         if (typeData)
             typeData->release();
     }
index ba1aaca..d04b38b 100644 (file)
@@ -688,6 +688,8 @@ void tst_qdeclarativeecmascript::attachedProperties()
         QCOMPARE(object->property("b").toInt(), 26);
         QCOMPARE(object->property("c").toInt(), 26);
         QCOMPARE(object->property("d").toInt(), 26);
+
+        delete object;
     }
 
     {