diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2014-08-01 10:13:06 +0200 |
---|---|---|
committer | Sérgio Martins <sergio.martins@kdab.com> | 2014-08-08 09:12:09 +0200 |
commit | f14f713c2fd42e94abe55b8fc1b4dabffaa15fda (patch) | |
tree | 568d7c4b64e0cf227a2c5d4c8697cded5220b2f0 /src | |
parent | c46088d2f4932319f6a153142bd2d9da30f94c76 (diff) |
Fix crash when loading invalid QML with behavior on invalid group property
Behaviors require the creation of a meta-object. However when trying to
create a behavior on a non-existent group property, we don't have a
base meta-object to base the "new" meta-object on, therefore this patch
adds a null pointer check.
The error in the QML file itself will be caught later on. The added test
ensures that as well as that it doesn't crash of course.
Change-Id: If73116053464e7e69b02ef59e8387060835083c8
Task-number: QTBUG-40369
Reviewed-by: Sérgio Martins <sergio.martins@kdab.com>
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/qml/compiler/qqmltypecompiler.cpp | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/qml/compiler/qqmltypecompiler.cpp b/src/qml/compiler/qqmltypecompiler.cpp index dacaa14a3d..f5cb5db369 100644 --- a/src/qml/compiler/qqmltypecompiler.cpp +++ b/src/qml/compiler/qqmltypecompiler.cpp @@ -541,12 +541,14 @@ bool QQmlPropertyCacheCreator::buildMetaObjectRecursively(int objectIndex, int r Q_ASSERT(baseTypeCache); } - if (needVMEMetaObject) { - if (!createMetaObject(objectIndex, obj, baseTypeCache)) - return false; - } else if (baseTypeCache) { - propertyCaches[objectIndex] = baseTypeCache; - baseTypeCache->addref(); + if (baseTypeCache) { + if (needVMEMetaObject) { + if (!createMetaObject(objectIndex, obj, baseTypeCache)) + return false; + } else { + propertyCaches[objectIndex] = baseTypeCache; + baseTypeCache->addref(); + } } if (propertyCaches.at(objectIndex)) { |