diff options
-rw-r--r-- | src/corelib/io/qurl.cpp | 9 | ||||
-rw-r--r-- | tests/auto/qurl/tst_qurl.cpp | 8 |
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(); |