Ensure that QUrl::toLocalFile returns decoded paths
QUrl::path() already decodes almost everything, but let's pass the formatting flag to be sure. Note: decoding of control characters from U+0001 to U+001F is not implemented. Non-UTF8 sequences are also not representable. Change-Id: I9a0ae2282ec3d48cc0e70e5b2d3824fb120709ed Reviewed-by: Shane Kearns <shane.kearns@accenture.com>
This commit is contained in:
parent
092118855b
commit
77a816c00d
@ -2502,11 +2502,11 @@ QString QUrl::toLocalFile() const
|
||||
return QString();
|
||||
|
||||
QString tmp;
|
||||
QString ourPath = path();
|
||||
QString ourPath = path(QUrl::MostDecoded);
|
||||
|
||||
// magic for shared drive on windows
|
||||
if (!d->host.isEmpty()) {
|
||||
tmp = QStringLiteral("//") + d->host + (ourPath.length() > 0 && ourPath.at(0) != QLatin1Char('/')
|
||||
tmp = QStringLiteral("//") + host() + (ourPath.length() > 0 && ourPath.at(0) != QLatin1Char('/')
|
||||
? QLatin1Char('/') + ourPath : ourPath);
|
||||
} else {
|
||||
tmp = ourPath;
|
||||
|
@ -1027,6 +1027,7 @@ void tst_QUrl::toLocalFile_data()
|
||||
QTest::newRow("data8") << QString::fromLatin1("file://somehost") << QString::fromLatin1("//somehost");
|
||||
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");
|
||||
QTest::newRow("data11") << QString::fromLatin1("file:///Mambo <%235>.mp3") << QString::fromLatin1("/Mambo <#5>.mp3");
|
||||
|
||||
// and some that result in empty (i.e., not local)
|
||||
QTest::newRow("xdata0") << QString::fromLatin1("/a.txt") << QString();
|
||||
|
Loading…
Reference in New Issue
Block a user