From e4d1bf9829c56dc446a07689758f22c58863d70d Mon Sep 17 00:00:00 2001 From: Joni Poikelin Date: Tue, 24 Nov 2015 09:51:12 +0200 Subject: Fix crash in QFileDialog::iconProvider() with native dialogs Task-number: QTBUG-49600 Change-Id: Ied28c0e7efa6b4dce25705dab98377848db5a6d3 Reviewed-by: Richard Moe Gustavsen Reviewed-by: Friedemann Kleint --- src/widgets/dialogs/qfiledialog.cpp | 2 ++ tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp | 9 +++++++++ 2 files changed, 11 insertions(+) diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index 2d4ba1aeb9..4e0d70fb9a 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -1938,6 +1938,8 @@ void QFileDialog::setIconProvider(QFileIconProvider *provider) QFileIconProvider *QFileDialog::iconProvider() const { Q_D(const QFileDialog); + if (!d->model) + return Q_NULLPTR; return d->model->iconProvider(); } diff --git a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp index ffc000a418..59288bd764 100644 --- a/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp +++ b/tests/auto/widgets/dialogs/qfiledialog/tst_qfiledialog.cpp @@ -165,6 +165,7 @@ private slots: #endif // QT_BUILD_INTERNAL #endif void rejectModalDialogs(); + void QTBUG49600_nativeIconProviderCrash(); private: void cleanupSettingsFile(); @@ -1487,5 +1488,13 @@ void tst_QFiledialog::rejectModalDialogs() QVERIFY(file.isEmpty()); } +void tst_QFiledialog::QTBUG49600_nativeIconProviderCrash() +{ + if (!QGuiApplicationPrivate::platformTheme()->usePlatformNativeDialog(QPlatformTheme::FileDialog)) + QSKIP("This platform always uses widgets to realize its QFileDialog, instead of the native file dialog."); + QFileDialog fd; + fd.iconProvider(); +} + QTEST_MAIN(tst_QFiledialog) #include "tst_qfiledialog.moc" -- cgit v1.2.3