summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/network/kernel/qhostaddress.cpp3
-rw-r--r--src/network/kernel/qhostaddress.h4
-rw-r--r--tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp2
3 files changed, 5 insertions, 4 deletions
diff --git a/src/network/kernel/qhostaddress.cpp b/src/network/kernel/qhostaddress.cpp
index 2adf19ead4..3c08717d11 100644
--- a/src/network/kernel/qhostaddress.cpp
+++ b/src/network/kernel/qhostaddress.cpp
@@ -1029,7 +1029,8 @@ QDebug operator<<(QDebug d, const QHostAddress &address)
uint qHash(const QHostAddress &key, uint seed)
{
- return qHash(key.toString(), seed);
+ QT_ENSURE_PARSED(&key);
+ return qHash(QByteArray::fromRawData(reinterpret_cast<const char *>(key.d->a6.c), 16), seed);
}
#ifndef QT_NO_DATASTREAM
diff --git a/src/network/kernel/qhostaddress.h b/src/network/kernel/qhostaddress.h
index b298e3f479..ce4470d32e 100644
--- a/src/network/kernel/qhostaddress.h
+++ b/src/network/kernel/qhostaddress.h
@@ -123,6 +123,7 @@ public:
static QPair<QHostAddress, int> parseSubnet(const QString &subnet);
+ friend Q_NETWORK_EXPORT uint qHash(const QHostAddress &key, uint seed = 0);
protected:
QScopedPointer<QHostAddressPrivate> d;
};
@@ -134,9 +135,6 @@ inline bool operator ==(QHostAddress::SpecialAddress address1, const QHostAddres
Q_NETWORK_EXPORT QDebug operator<<(QDebug, const QHostAddress &);
#endif
-
-Q_NETWORK_EXPORT uint qHash(const QHostAddress &key, uint seed = 0);
-
#ifndef QT_NO_DATASTREAM
Q_NETWORK_EXPORT QDataStream &operator<<(QDataStream &, const QHostAddress &);
Q_NETWORK_EXPORT QDataStream &operator>>(QDataStream &, QHostAddress &);
diff --git a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
index a0403e5550..d1027c81e0 100644
--- a/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
+++ b/tests/auto/network/kernel/qhostaddress/tst_qhostaddress.cpp
@@ -323,6 +323,8 @@ void tst_QHostAddress::compare()
QFETCH(bool, result);
QCOMPARE(first == second, result);
+ if (result == true)
+ QVERIFY(qHash(first) == qHash(second));
}
void tst_QHostAddress::assignment()