From 6c23b082033b627f31170166c07ab35fa6be9343 Mon Sep 17 00:00:00 2001 From: "Wladimir J. van der Laan" Date: Tue, 5 Aug 2014 13:33:26 +0200 Subject: [PATCH] CCoinsKeyHasher::operator() should return size_t It currently returns uint64_t, which on older boost (at least 1.46) causes test failures on 32-bit systems. This problem was introduced in bc42503. Fixes #4634. --- src/coins.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/coins.h b/src/coins.h index 9f90fe6b..ff602881 100644 --- a/src/coins.h +++ b/src/coins.h @@ -247,7 +247,10 @@ private: public: CCoinsKeyHasher(); - uint64_t operator()(const uint256& key) const { + // This *must* return size_t. With Boost 1.46 on 32-bit systems the + // unordered_map will behave unpredictably if the custom hasher returns a + // uint64_t, resulting in failures when syncing the chain (#4634). + size_t operator()(const uint256& key) const { return key.GetHash(salt); } };