summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/io/qurl.cpp9
-rw-r--r--tests/auto/qurl/tst_qurl.cpp8
2 files changed, 13 insertions, 4 deletions
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 4de8fe8..51631ff 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -6155,12 +6155,19 @@ QUrl QUrl::fromLocalFile(const QString &localFile)
returned value in the form found on SMB networks (for example,
"//servername/path/to/file.txt").
+ If this is a relative URL, in Qt 4.x this function returns the path to
+ maintain backward compatability. This will change from 5.0 onwards. Then
+ the path is returned only for URLs where the scheme is "file", and for
+ all other URLs an empty string is returned.
+
\sa fromLocalFile(), isLocalFile()
*/
QString QUrl::toLocalFile() const
{
+ if (!d) return QString();
+
// the call to isLocalFile() also ensures that we're parsed
- if (!isLocalFile())
+ if (!isLocalFile() && !d->scheme.isEmpty())
return QString();
QString tmp;
diff --git a/tests/auto/qurl/tst_qurl.cpp b/tests/auto/qurl/tst_qurl.cpp
index d64ac17..7a6713f 100644
--- a/tests/auto/qurl/tst_qurl.cpp
+++ b/tests/auto/qurl/tst_qurl.cpp
@@ -1774,10 +1774,12 @@ void tst_QUrl::toLocalFile_data()
QTest::newRow("data9") << QString::fromLatin1("file:////somehost/somedir/somefile") << QString::fromLatin1("//somehost/somedir/somefile");
QTest::newRow("data10") << QString::fromLatin1("FILE:/a.txt") << QString::fromLatin1("/a.txt");
+ // relative urls
+ QTest::newRow("relative0") << QString::fromLatin1("a.txt") << QString::fromLatin1("a.txt");
+ QTest::newRow("relative1") << QString::fromLatin1("/a.txt") << QString::fromLatin1("/a.txt");
+ QTest::newRow("relative2") << QString::fromLatin1("//a.txt") << QString::fromLatin1("//a.txt");
+
// and some that result in empty (i.e., not local)
- QTest::newRow("xdata0") << QString::fromLatin1("/a.txt") << QString();
- QTest::newRow("xdata1") << QString::fromLatin1("//a.txt") << QString();
- QTest::newRow("xdata2") << QString::fromLatin1("///a.txt") << QString();
QTest::newRow("xdata3") << QString::fromLatin1("foo:/a.txt") << QString();
QTest::newRow("xdata4") << QString::fromLatin1("foo://a.txt") << QString();
QTest::newRow("xdata5") << QString::fromLatin1("foo:///a.txt") << QString();