diff options
-rw-r--r-- | src/qml/qml/qqmlcomponent.cpp | 11 | ||||
-rw-r--r-- | src/qml/qml/qqmlcomponent_p.h | 4 | ||||
-rw-r--r-- | src/qml/qml/qqmlincubator.cpp | 11 | ||||
-rw-r--r-- | src/qml/qml/qqmlincubator_p.h | 2 |
4 files changed, 7 insertions, 21 deletions
diff --git a/src/qml/qml/qqmlcomponent.cpp b/src/qml/qml/qqmlcomponent.cpp index 282f915141..e615318636 100644 --- a/src/qml/qml/qqmlcomponent.cpp +++ b/src/qml/qml/qqmlcomponent.cpp @@ -339,8 +339,6 @@ void QQmlComponentPrivate::fromTypeData(QQmlTypeData *data) if (!compilationUnit) { Q_ASSERT(data->isError()); state.errors = data->errors(); - } else { - compilationUnit->addref(); } data->release(); @@ -354,10 +352,7 @@ void QQmlComponentPrivate::clear() typeData = 0; } - if (compilationUnit) { - compilationUnit->release(); - compilationUnit = 0; - } + compilationUnit = nullptr; } /*! @@ -391,8 +386,6 @@ QQmlComponent::~QQmlComponent() d->typeData->unregisterCallback(d); d->typeData->release(); } - if (d->compilationUnit) - d->compilationUnit->release(); } /*! @@ -567,7 +560,6 @@ QQmlComponent::QQmlComponent(QQmlEngine *engine, QV4::CompiledData::CompilationU { Q_D(QQmlComponent); d->compilationUnit = compilationUnit; - compilationUnit->addref(); d->start = start; d->url = compilationUnit->url(); d->progress = 1.0; @@ -1048,7 +1040,6 @@ void QQmlComponent::create(QQmlIncubator &incubator, QQmlContext *context, QQmlEnginePrivate *enginePriv = QQmlEnginePrivate::get(d->engine); p->compilationUnit = d->compilationUnit; - p->compilationUnit->addref(); p->enginePriv = enginePriv; p->creator.reset(new QQmlObjectCreator(contextData, d->compilationUnit, d->creationContext, p.data())); p->subComponentToCreate = d->start; diff --git a/src/qml/qml/qqmlcomponent_p.h b/src/qml/qml/qqmlcomponent_p.h index bb6c6d1c05..be69986117 100644 --- a/src/qml/qml/qqmlcomponent_p.h +++ b/src/qml/qml/qqmlcomponent_p.h @@ -79,7 +79,7 @@ class Q_QML_PRIVATE_EXPORT QQmlComponentPrivate : public QObjectPrivate, public public: QQmlComponentPrivate() - : typeData(0), progress(0.), start(-1), compilationUnit(0), engine(0), creationContext(0), depthIncreased(false) {} + : typeData(0), progress(0.), start(-1), engine(0), creationContext(0), depthIncreased(false) {} void loadUrl(const QUrl &newUrl, QQmlComponent::CompilationMode mode = QQmlComponent::PreferSynchronous); @@ -97,7 +97,7 @@ public: qreal progress; int start; - QV4::CompiledData::CompilationUnit *compilationUnit; + QQmlRefPointer<QV4::CompiledData::CompilationUnit> compilationUnit; struct ConstructionState { ConstructionState() diff --git a/src/qml/qml/qqmlincubator.cpp b/src/qml/qml/qqmlincubator.cpp index c52b5014ca..7494d6a633 100644 --- a/src/qml/qml/qqmlincubator.cpp +++ b/src/qml/qml/qqmlincubator.cpp @@ -131,7 +131,7 @@ QQmlIncubationController *QQmlEngine::incubationController() const QQmlIncubatorPrivate::QQmlIncubatorPrivate(QQmlIncubator *q, QQmlIncubator::IncubationMode m) : q(q), status(QQmlIncubator::Null), mode(m), isAsynchronous(false), progress(Execute), - result(0), enginePriv(0), compilationUnit(0), waitingOnMe(0) + result(0), enginePriv(0), waitingOnMe(0) { } @@ -142,18 +142,13 @@ QQmlIncubatorPrivate::~QQmlIncubatorPrivate() void QQmlIncubatorPrivate::clear() { + compilationUnit = nullptr; if (next.isInList()) { next.remove(); - Q_ASSERT(compilationUnit); - compilationUnit->release(); - compilationUnit = 0; enginePriv->incubatorCount--; QQmlIncubationController *controller = enginePriv->incubationController; if (controller) controller->incubatingObjectCountChanged(enginePriv->incubatorCount); - } else if (compilationUnit) { - compilationUnit->release(); - compilationUnit = 0; } enginePriv = 0; if (!rootContext.isNull()) { @@ -570,7 +565,7 @@ void QQmlIncubator::clear() d->clear(); - Q_ASSERT(d->compilationUnit == 0); + Q_ASSERT(d->compilationUnit.isNull()); Q_ASSERT(d->waitingOnMe.data() == 0); Q_ASSERT(d->waitingFor.isEmpty()); diff --git a/src/qml/qml/qqmlincubator_p.h b/src/qml/qml/qqmlincubator_p.h index 7c6bc15404..ecf3b6d2ca 100644 --- a/src/qml/qml/qqmlincubator_p.h +++ b/src/qml/qml/qqmlincubator_p.h @@ -85,7 +85,7 @@ public: QPointer<QObject> result; QQmlGuardedContextData rootContext; QQmlEnginePrivate *enginePriv; - QV4::CompiledData::CompilationUnit *compilationUnit; + QQmlRefPointer<QV4::CompiledData::CompilationUnit> compilationUnit; QScopedPointer<QQmlObjectCreator> creator; int subComponentToCreate; QQmlVMEGuard vmeGuard; |