From 9d12cc1544028ee12e0355c364e3a36360236638 Mon Sep 17 00:00:00 2001 From: Glenn Watson Date: Mon, 6 Feb 2012 08:44:18 +1000 Subject: [PATCH] Fix incorrect ref count with dynamic roles on worker thread. When using the dynamic roles mode from a worker script thread, the reference count for the list model worker agent was not being incremented correctly, causing the final release of the agent to be reading from memory that had already been freed. Change-Id: I06d8e363c95133c1c162f32e1efb2d4020ed96be Reviewed-by: Martin Jones --- src/declarative/qml/qdeclarativelistmodel.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/declarative/qml/qdeclarativelistmodel.cpp b/src/declarative/qml/qdeclarativelistmodel.cpp index 65b3de9..ce7235e 100644 --- a/src/declarative/qml/qdeclarativelistmodel.cpp +++ b/src/declarative/qml/qdeclarativelistmodel.cpp @@ -1522,6 +1522,9 @@ QDeclarativeListModel *QDeclarativeListModel::createWithOwner(QDeclarativeListMo model->m_agent = newOwner->m_agent; model->m_dynamicRoles = newOwner->m_dynamicRoles; + if (model->m_mainThread && model->m_agent) + model->m_agent->addref(); + QDeclarativeEngine::setContextForObject(model, QDeclarativeEngine::contextForObject(newOwner)); return model; -- 2.7.4