diff options
author | Friedemann Kleint <Friedemann.Kleint@digia.com> | 2012-10-26 10:44:00 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2012-10-26 11:51:56 +0200 |
commit | d0aa81ee104107db1ce41a9bf0f91d4cb144f7de (patch) | |
tree | 90e690af8d9738265b1699027b84d0227c8e6667 /src/widgets/dialogs | |
parent | 8ac2ea94d37126ef68d394e056bcaf7769a99956 (diff) |
Fix a crash in QFileDialog when selecting an invalid name filter.
When nameDetailsVisible is set to false and an invalid/empty
string is passed to selectNameFilter(), the regexp used to
strip the filter off the suffixes returns empty and a crash
occurs.
Change-Id: I926ea49514ff25a103977d8121fca1cf83d647f5
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@digia.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Diffstat (limited to 'src/widgets/dialogs')
-rw-r--r-- | src/widgets/dialogs/qfiledialog.cpp | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/src/widgets/dialogs/qfiledialog.cpp b/src/widgets/dialogs/qfiledialog.cpp index d9d318765d..2ff0d03c35 100644 --- a/src/widgets/dialogs/qfiledialog.cpp +++ b/src/widgets/dialogs/qfiledialog.cpp @@ -1201,9 +1201,11 @@ void QFileDialog::selectNameFilter(const QString &filter) d->selectNameFilter_sys(filter); return; } - int i; + int i = -1; if (testOption(HideNameFilterDetails)) { - i = d->qFileDialogUi->fileTypeCombo->findText(qt_strip_filters(qt_make_filter_list(filter)).first()); + const QStringList filters = qt_strip_filters(qt_make_filter_list(filter)); + if (!filters.isEmpty()) + i = d->qFileDialogUi->fileTypeCombo->findText(filters.first()); } else { i = d->qFileDialogUi->fileTypeCombo->findText(filter); } @@ -1770,7 +1772,7 @@ QString QFileDialog::getOpenFileName(QWidget *parent, // create a qt dialog QFileDialog dialog(args); - if (selectedFilter) + if (selectedFilter && !selectedFilter->isEmpty()) dialog.selectNameFilter(*selectedFilter); if (dialog.exec() == QDialog::Accepted) { if (selectedFilter) @@ -1855,7 +1857,7 @@ QStringList QFileDialog::getOpenFileNames(QWidget *parent, // create a qt dialog QFileDialog dialog(args); - if (selectedFilter) + if (selectedFilter && !selectedFilter->isEmpty()) dialog.selectNameFilter(*selectedFilter); if (dialog.exec() == QDialog::Accepted) { if (selectedFilter) @@ -1942,7 +1944,7 @@ QString QFileDialog::getSaveFileName(QWidget *parent, // create a qt dialog QFileDialog dialog(args); dialog.setAcceptMode(AcceptSave); - if (selectedFilter) + if (selectedFilter && !selectedFilter->isEmpty()) dialog.selectNameFilter(*selectedFilter); if (dialog.exec() == QDialog::Accepted) { if (selectedFilter) |