diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-09-01 18:04:44 +0200 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-09-03 16:32:02 +0000 |
commit | 217bca42934ecf9a5fab74bbddbfa852c9b1bfe6 (patch) | |
tree | f7523be60eb2f8b508d93901f8a45fe119e79626 | |
parent | 83a5364cf8feacc48186df4fb3cadcc9f37afce0 (diff) |
QQuickView/QQuickWidget::errors(): fix crash
Change-Id: Ie37ed5fac642931b658d2b738ddd45d23cda54c6
Reviewed-by: Robin Burchell <robin.burchell@viroteck.net>
Reviewed-by: Mitch Curtis <mitch.curtis@theqtcompany.com>
-rw-r--r-- | src/quick/items/qquickview.cpp | 2 | ||||
-rw-r--r-- | src/quickwidgets/qquickwidget.cpp | 2 | ||||
-rw-r--r-- | tests/auto/quick/qquickview/tst_qquickview.cpp | 4 | ||||
-rw-r--r-- | tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp | 1 |
4 files changed, 7 insertions, 2 deletions
diff --git a/src/quick/items/qquickview.cpp b/src/quick/items/qquickview.cpp index 0b3cfa17b5..b0b24ca69a 100644 --- a/src/quick/items/qquickview.cpp +++ b/src/quick/items/qquickview.cpp @@ -370,7 +370,7 @@ QList<QQmlError> QQuickView::errors() const QQmlError error; error.setDescription(QLatin1String("QQuickView: invalid qml engine.")); errs << error; - } else if (d->component->status() == QQmlComponent::Ready && !d->root) { + } else if (d->component && d->component->status() == QQmlComponent::Ready && !d->root) { QQmlError error; error.setDescription(QLatin1String("QQuickView: invalid root object.")); errs << error; diff --git a/src/quickwidgets/qquickwidget.cpp b/src/quickwidgets/qquickwidget.cpp index 5755271fe1..70c9309ab0 100644 --- a/src/quickwidgets/qquickwidget.cpp +++ b/src/quickwidgets/qquickwidget.cpp @@ -566,7 +566,7 @@ QList<QQmlError> QQuickWidget::errors() const QQmlError error; error.setDescription(QLatin1String("QQuickWidget: invalid qml engine.")); errs << error; - } else if (d->component->status() == QQmlComponent::Ready && !d->root) { + } else if (d->component && d->component->status() == QQmlComponent::Ready && !d->root) { QQmlError error; error.setDescription(QLatin1String("QQuickWidget: invalid root object.")); errs << error; diff --git a/tests/auto/quick/qquickview/tst_qquickview.cpp b/tests/auto/quick/qquickview/tst_qquickview.cpp index 2f054e278a..69e27984c7 100644 --- a/tests/auto/quick/qquickview/tst_qquickview.cpp +++ b/tests/auto/quick/qquickview/tst_qquickview.cpp @@ -182,6 +182,10 @@ void tst_QQuickView::errors() { { QQuickView view; + QVERIFY(view.errors().isEmpty()); // don't crash + } + { + QQuickView view; QQmlTestMessageHandler messageHandler; view.setSource(testFileUrl("error1.qml")); QCOMPARE(view.status(), QQuickView::Error); diff --git a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp index 11696e288f..7cc5dfa7c6 100644 --- a/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp +++ b/tests/auto/quickwidgets/qquickwidget/tst_qquickwidget.cpp @@ -223,6 +223,7 @@ void tst_qquickwidget::errors() { QQuickWidget *view = new QQuickWidget; QScopedPointer<QQuickWidget> cleanupView(view); + QVERIFY(view->errors().isEmpty()); // don't crash QQmlTestMessageHandler messageHandler; view->setSource(testFileUrl("error1.qml")); |