diff options
author | Christian Kamm <christian.d.kamm@nokia.com> | 2011-01-04 17:04:44 +0100 |
---|---|---|
committer | Christian Kamm <christian.d.kamm@nokia.com> | 2011-01-06 15:01:09 +0100 |
commit | ab642bc8206b291fb8b6f8a569ae4902a935187c (patch) | |
tree | e1439f85b5dce1424560f9ee14e8c971af9221ae /src/libs/languageutils | |
parent | 62d66fcd1542ebed3259606c792472c035960ebc (diff) | |
download | qt-creator-ab642bc8206b291fb8b6f8a569ae4902a935187c.tar.gz |
QmlJS: Add refcounting to FakeMetaObjects.
Previously they were leaked when a qmldump or the C++ exported QML
type list updated.
Just deleting the previous FakeMetaObjects is not an option, as they
might still be used in a QmlObjectValue owned by an Engine.
Reviewed-by: Erik Verbruggen
Diffstat (limited to 'src/libs/languageutils')
-rw-r--r-- | src/libs/languageutils/fakemetaobject.cpp | 4 | ||||
-rw-r--r-- | src/libs/languageutils/fakemetaobject.h | 10 |
2 files changed, 9 insertions, 5 deletions
diff --git a/src/libs/languageutils/fakemetaobject.cpp b/src/libs/languageutils/fakemetaobject.cpp index 6be0d25cb3..c026cca150 100644 --- a/src/libs/languageutils/fakemetaobject.cpp +++ b/src/libs/languageutils/fakemetaobject.cpp @@ -128,9 +128,9 @@ void FakeMetaObject::setSuperclassName(const QString &superclass) QString FakeMetaObject::superclassName() const { return m_superName; } -void FakeMetaObject::setSuperclass(FakeMetaObject *superClass) +void FakeMetaObject::setSuperclass(ConstPtr superClass) { m_super = superClass; } -const FakeMetaObject *FakeMetaObject::superClass() const +FakeMetaObject::ConstPtr FakeMetaObject::superClass() const { return m_super; } void FakeMetaObject::addEnum(const FakeMetaEnum &fakeEnum) diff --git a/src/libs/languageutils/fakemetaobject.h b/src/libs/languageutils/fakemetaobject.h index 6fd032e5e5..f00b8f608a 100644 --- a/src/libs/languageutils/fakemetaobject.h +++ b/src/libs/languageutils/fakemetaobject.h @@ -41,6 +41,7 @@ #include <QtCore/QStringList> #include <QtCore/QList> #include <QtCore/QHash> +#include <QtCore/QSharedPointer> namespace LanguageUtils { @@ -118,6 +119,9 @@ class LANGUAGEUTILS_EXPORT FakeMetaObject { Q_DISABLE_COPY(FakeMetaObject); public: + typedef QSharedPointer<FakeMetaObject> Ptr; + typedef QSharedPointer<const FakeMetaObject> ConstPtr; + class Export { public: QString package; @@ -128,7 +132,7 @@ public: private: QList<Export> m_exports; - const FakeMetaObject *m_super; + ConstPtr m_super; QString m_superName; QList<FakeMetaEnum> m_enums; QHash<QString, int> m_enumNameToIndex; @@ -145,8 +149,8 @@ public: void setSuperclassName(const QString &superclass); QString superclassName() const; - void setSuperclass(FakeMetaObject *superClass); - const FakeMetaObject *superClass() const; + void setSuperclass(ConstPtr superClass); + ConstPtr superClass() const; void addEnum(const FakeMetaEnum &fakeEnum); int enumeratorCount() const; |