From 662ab7ebdad0e6c32278f2fcf9a5e43a11681b09 Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 22 Nov 2019 10:25:27 +0100 Subject: QQmlDelegateModel: Set extraObject only if required properties given Otherwise we would set the same object as extraObject and as contextObject. That spells trouble when tearing down the context. Fixes: QTBUG-79958 Change-Id: I97fd0bf111304d06cff35eda46d4b4c6eefdaccc Reviewed-by: Simon Hausmann Reviewed-by: Fabian Kosmale --- src/qmlmodels/qqmldelegatemodel.cpp | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'src/qmlmodels') diff --git a/src/qmlmodels/qqmldelegatemodel.cpp b/src/qmlmodels/qqmldelegatemodel.cpp index 531ba18a4b..9cfc80ba4e 100644 --- a/src/qmlmodels/qqmldelegatemodel.cpp +++ b/src/qmlmodels/qqmldelegatemodel.cpp @@ -937,13 +937,14 @@ void PropertyUpdater::breakBinding() void QQDMIncubationTask::initializeRequiredProperties(QQmlDelegateModelItem *modelItemToIncubate, QObject *object) { auto incubatorPriv = QQmlIncubatorPrivate::get(this); - QQmlData *d = QQmlData::get(object); - auto contextData = d ? d->context : nullptr; - if (contextData) { - contextData->hasExtraObject = true; - contextData->extraObject = modelItemToIncubate; - } if (incubatorPriv->hadRequiredProperties()) { + QQmlData *d = QQmlData::get(object); + auto contextData = d ? d->context : nullptr; + if (contextData) { + contextData->hasExtraObject = true; + contextData->extraObject = modelItemToIncubate; + } + if (incubatorPriv->requiredProperties().empty()) return; RequiredProperties &requiredProperties = incubatorPriv->requiredProperties(); -- cgit v1.2.3