summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/network/kernel/qhostaddress.cpp2
-rw-r--r--tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp4
2 files changed, 6 insertions, 0 deletions
diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp
index cbd804c44ba..b662a1d610d 100644
--- a/src/network/kernel/qhostaddress.cpp
+++ b/src/network/kernel/qhostaddress.cpp
@@ -899,6 +899,8 @@ bool QHostAddress::operator ==(SpecialAddress other) const
return otherAddress.d->protocol == QAbstractSocket::IPv6Protocol
&& memcmp(&d->a6, &otherAddress.d->a6, sizeof(Q_IPV6ADDR)) == 0;
}
+ if (d->protocol == QAbstractSocket::AnyIPProtocol)
+ return other == QHostAddress::Any;
return int(other) == int(Null);
}
diff --git a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
index 7e35830791d..a4b871a1276 100644
--- a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
+++ b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
@@ -285,6 +285,10 @@ void tst_QHostAddress::specialAddresses()
QFETCH(bool, result);
QVERIFY((QHostAddress(text) == (QHostAddress::SpecialAddress)address) == result);
+ //check special address equal to itself (QTBUG-22898), note two overloads of operator==
+ QVERIFY(QHostAddress((QHostAddress::SpecialAddress)address) == QHostAddress((QHostAddress::SpecialAddress)address));
+ QVERIFY(QHostAddress((QHostAddress::SpecialAddress)address) == (QHostAddress::SpecialAddress)address);
+
QHostAddress setter;
setter.setAddress(text);
if (result) {