aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@digia.com>2014-06-12 10:11:09 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2014-08-26 05:50:50 +0200
commiteadc35f499edd25d5d1c5f803db1d61675c1cc2c (patch)
treefc366e9c798c4fa863ba2d623c733242e32435a5
parentb0835b31fd456c30ea3fcaae6edc58212556477d (diff)
Don't use d->instanceModel after free'ing it
prevModel points to d->instanceModel and is being used further down in the code. So reset the pointer to 0 after freeing the old instanceModel. Change-Id: I8854ae3e09c8b2fe50ad311f3dbc7b8ed26805e1 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
-rw-r--r--src/qml/jsruntime/qv4arraydata.cpp4
-rw-r--r--src/qml/types/qqmlinstantiator.cpp1
2 files changed, 3 insertions, 2 deletions
diff --git a/src/qml/jsruntime/qv4arraydata.cpp b/src/qml/jsruntime/qv4arraydata.cpp
index ed2122fb89..7d76a10ad6 100644
--- a/src/qml/jsruntime/qv4arraydata.cpp
+++ b/src/qml/jsruntime/qv4arraydata.cpp
@@ -640,7 +640,7 @@ public:
inline ArrayElementLessThan(ExecutionContext *context, ObjectRef thisObject, const ValueRef comparefn)
: m_context(context), thisObject(thisObject), m_comparefn(comparefn) {}
- bool operator()(const Value &v1, const Value &v2) const;
+ bool operator()(Value v1, Value v2) const;
private:
ExecutionContext *m_context;
@@ -649,7 +649,7 @@ private:
};
-bool ArrayElementLessThan::operator()(const Value &v1, const Value &v2) const
+bool ArrayElementLessThan::operator()(Value v1, Value v2) const
{
Scope scope(m_context);
diff --git a/src/qml/types/qqmlinstantiator.cpp b/src/qml/types/qqmlinstantiator.cpp
index 724a76825b..7a52ad2134 100644
--- a/src/qml/types/qqmlinstantiator.cpp
+++ b/src/qml/types/qqmlinstantiator.cpp
@@ -376,6 +376,7 @@ void QQmlInstantiator::setModel(const QVariant &v)
if (object && (vim = qobject_cast<QQmlInstanceModel *>(object))) {
if (d->ownModel) {
delete d->instanceModel;
+ prevModel = 0;
d->ownModel = false;
}
d->instanceModel = vim;