summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/corelib/io/qurl.cpp6
-rw-r--r--tests/auto/corelib/io/qurl/tst_qurl.cpp4
2 files changed, 9 insertions, 1 deletions
diff --git a/src/corelib/io/qurl.cpp b/src/corelib/io/qurl.cpp
index 07024d3ba8..68523cd3d4 100644
--- a/src/corelib/io/qurl.cpp
+++ b/src/corelib/io/qurl.cpp
@@ -2382,7 +2382,11 @@ bool QUrl::operator ==(const QUrl &url) const
return url.d->isEmpty();
if (!url.d)
return d->isEmpty();
- return d->sectionIsPresent == url.d->sectionIsPresent &&
+
+ // Compare which sections are present, but ignore Host
+ // which is set by parsing but not by construction, when empty.
+ const int mask = QUrlPrivate::FullUrl & ~QUrlPrivate::Host;
+ return (d->sectionIsPresent & mask) == (url.d->sectionIsPresent & mask) &&
d->scheme == url.d->scheme &&
d->userName == url.d->userName &&
d->password == url.d->password &&
diff --git a/tests/auto/corelib/io/qurl/tst_qurl.cpp b/tests/auto/corelib/io/qurl/tst_qurl.cpp
index 48ff34ad56..1f3dcae8b7 100644
--- a/tests/auto/corelib/io/qurl/tst_qurl.cpp
+++ b/tests/auto/corelib/io/qurl/tst_qurl.cpp
@@ -309,6 +309,8 @@ void tst_QUrl::comparison2_data()
QTest::newRow("samescheme") << QUrl("x:") << QUrl("x:") << 0;
QTest::newRow("no-fragment-empty-fragment") << QUrl("http://kde.org/dir/") << QUrl("http://kde.org/dir/#") << -1;
QTest::newRow("no-query-empty-query") << QUrl("http://kde.org/dir/") << QUrl("http://kde.org/dir/?") << -1;
+ QTest::newRow("simple-file-url") << QUrl("file:///home/dfaure/file") << QUrl("file:///home/dfaure/file") << 0;
+ QTest::newRow("fromLocalFile-vs-ctor") << QUrl::fromLocalFile("/home/dfaure/file") << QUrl("file:///home/dfaure/file") << 0;
// the following three are by choice
// the order could be the opposite and it would still be correct
@@ -2638,6 +2640,8 @@ void tst_QUrl::emptyAuthorityRemovesExistingAuthority()
void tst_QUrl::acceptEmptyAuthoritySegments()
{
+ QCOMPARE(QUrl("remote://").toString(), QString::fromLatin1("remote://"));
+
// Verify that foo:///bar is not mangled to foo:/bar
QString foo_triple_bar("foo:///bar"), foo_uni_bar("foo:/bar");