aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo M. Correia <rcorreia@wizy.org>2012-05-13 21:31:59 +0200
committerRicardo M. Correia <rcorreia@wizy.org>2012-05-13 21:42:54 +0200
commit4843b55fd167c54d86eb9e1f19525ed363cfe72d (patch)
tree81a74462fdd3fc20a25521a8634121ad0b1a445f
parent1653f97c8f3c37cd96e03cf397c31c5caf81af08 (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.cpp2
-rw-r--r--src/netbase.cpp4
-rw-r--r--src/netbase.h2
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;