diff options
author | Martin Jones <martin.jones@nokia.com> | 2012-06-22 11:54:01 +1000 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-06-22 07:45:54 +0200 |
commit | e2b7867474608842deb380ca5fcc686e9e7840da (patch) | |
tree | cfa4a9113fe08e6e30556d31b0fff9070bb4e4cd /src | |
parent | 587b21cf18bcb689aef58411837ed616b02c952b (diff) |
QDeclarativeVisualDataModel crashes getting QAbstractItemModel roles.
Don't iterate over a temporary.
Task-number: QTBUG-26209
Change-Id: Iab99d0756c5c30e4f5bb9b674a20eaf76ebce1e6
Reviewed-by: Andrew den Exter <andrew.den-exter@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp index ec840f4c..2c4e8641 100644 --- a/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp +++ b/src/declarative/graphicsitems/qdeclarativevisualitemmodel.cpp @@ -288,8 +288,9 @@ public: for (int ii = 0; ii < m_roles.count(); ++ii) m_roleNames.insert(m_listModelInterface->toString(m_roles.at(ii)).toUtf8(), m_roles.at(ii)); } else if (m_abstractItemModel) { - for (QHash<int,QByteArray>::const_iterator it = m_abstractItemModel->roleNames().constBegin(); - it != m_abstractItemModel->roleNames().constEnd(); ++it) { + QHash<int,QByteArray> roleNames = m_abstractItemModel->roleNames(); + for (QHash<int,QByteArray>::const_iterator it = roleNames.constBegin(); + it != roleNames.constEnd(); ++it) { m_roles.append(it.key()); m_roleNames.insert(*it, it.key()); } |