summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/io/qfileselector.cpp5
-rw-r--r--tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp3
2 files changed, 7 insertions, 1 deletions
diff --git a/src/corelib/io/qfileselector.cpp b/src/corelib/io/qfileselector.cpp
index 1a58da1e18..dd6257a885 100644
--- a/src/corelib/io/qfileselector.cpp
+++ b/src/corelib/io/qfileselector.cpp
@@ -278,7 +278,10 @@ QString QFileSelectorPrivate::select(const QString &filePath) const
Q_Q(const QFileSelector);
QFileInfo fi(filePath);
- QString ret = selectionHelper(fi.path().isEmpty() ? QString() : fi.path() + QLatin1Char('/'),
+ QString pathString;
+ if (auto path = fi.path(); !path.isEmpty())
+ pathString = path.endsWith(u'/') ? path : path + u'/';
+ QString ret = selectionHelper(pathString,
fi.fileName(), q->allSelectors());
if (!ret.isEmpty())
diff --git a/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp b/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp
index d8639b6864..3d79507050 100644
--- a/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp
+++ b/tests/auto/corelib/io/qfileselector/tst_qfileselector.cpp
@@ -215,6 +215,9 @@ void tst_QFileSelector::urlConvenience_data()
strUrlWithFragment = QString("file:") + testWithQueryAndFragment;
QTest::newRow("file with query and fragment too") << QUrl(strUrlWithFragment) << (QStringList()) << QUrl(strUrlWithFragment);
+ // preserve path to root
+ QTest::newRow("path to root") << QUrl("file:///") << (QStringList()) << QUrl("file:///");
+
// http://qt-project.org/images/qtdn/sprites-combined-latest.png is chosen as a representative real world URL
// But note that this test is checking that http urls are NOT selected so it shouldn't be checked
QUrl testHttpUrl("http://qt-project.org/images/sprites-combined-latest.png");