1
0
mirror of https://github.com/d47081/qBittorrent.git synced 2025-01-11 23:37:59 +00:00

Use systematic approach to generate hash

The basic idea is to hash each class member and then mix them with xor
operation.
However the `seed` must be handled with care, it should only be
introduced once when mixing the hashes of each class member, otherwise
under some circumstances the `seed` might xor with itself and thus break
the intended effect.
This commit is contained in:
Chocobo1 2020-01-27 04:04:02 +08:00
parent 1740f968df
commit 5905c085c6
No known key found for this signature in database
GPG Key ID: 210D9C873253A68C
2 changed files with 2 additions and 2 deletions

View File

@ -162,5 +162,5 @@ bool BitTorrent::operator==(const TrackerEntry &left, const TrackerEntry &right)
uint BitTorrent::qHash(const TrackerEntry &key, const uint seed)
{
return (::qHash(key.url(), seed) ^ key.tier());
return (::qHash(key.url(), seed) ^ ::qHash(key.tier()));
}

View File

@ -348,7 +348,7 @@ Net::ServiceID Net::ServiceID::fromURL(const QUrl &url)
uint Net::qHash(const ServiceID &serviceID, const uint seed)
{
return ::qHash(serviceID.hostName, seed) ^ serviceID.port;
return ::qHash(serviceID.hostName, seed) ^ ::qHash(serviceID.port);
}
bool Net::operator==(const ServiceID &lhs, const ServiceID &rhs)