diff options
author | Ricardo M. Correia <rcorreia@wizy.org> | 2012-05-13 21:31:59 +0200 |
---|---|---|
committer | Ricardo M. Correia <rcorreia@wizy.org> | 2012-05-13 21:42:54 +0200 |
commit | 4843b55fd167c54d86eb9e1f19525ed363cfe72d (patch) | |
tree | 81a74462fdd3fc20a25521a8634121ad0b1a445f | |
parent | 1653f97c8f3c37cd96e03cf397c31c5caf81af08 (diff) |
Make CNetAddr::GetHash() return an unsigned val.
This prevents an undefined operation in main.cpp, when shifting the hash value
left by 32 bits.
Shifting a signed int left into the sign bit is undefined in C++11.
-rw-r--r-- | src/main.cpp | 2 | ||||
-rw-r--r-- | src/netbase.cpp | 4 | ||||
-rw-r--r-- | src/netbase.h | 2 |
3 files changed, 4 insertions, 4 deletions
diff --git a/src/main.cpp b/src/main.cpp index 20bb56e964..f71702f0e5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -2440,7 +2440,7 @@ bool static ProcessMessage(CNode* pfrom, string strCommand, CDataStream& vRecv) static uint256 hashSalt; if (hashSalt == 0) RAND_bytes((unsigned char*)&hashSalt, sizeof(hashSalt)); - int64 hashAddr = addr.GetHash(); + uint64 hashAddr = addr.GetHash(); uint256 hashRand = hashSalt ^ (hashAddr<<32) ^ ((GetTime()+hashAddr)/(24*60*60)); hashRand = Hash(BEGIN(hashRand), END(hashRand)); multimap<uint256, CNode*> mapMix; diff --git a/src/netbase.cpp b/src/netbase.cpp index 2131bdf75b..c237e2dc4d 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -820,10 +820,10 @@ std::vector<unsigned char> CNetAddr::GetGroup() const return vchRet; } -int64 CNetAddr::GetHash() const +uint64 CNetAddr::GetHash() const { uint256 hash = Hash(&ip[0], &ip[16]); - int64 nRet; + uint64 nRet; memcpy(&nRet, &hash, sizeof(nRet)); return nRet; } diff --git a/src/netbase.h b/src/netbase.h index 514a1ae950..544a666866 100644 --- a/src/netbase.h +++ b/src/netbase.h @@ -66,7 +66,7 @@ class CNetAddr std::string ToString() const; std::string ToStringIP() const; int GetByte(int n) const; - int64 GetHash() const; + uint64 GetHash() const; bool GetInAddr(struct in_addr* pipv4Addr) const; std::vector<unsigned char> GetGroup() const; int GetReachabilityFrom(const CNetAddr *paddrPartner = NULL) const; |