merge bitcoin#21969: Switch serialize to uint8_t

This commit is contained in:
Kittywhiskers Van Gogh 2021-05-31 14:57:32 +02:00 committed by pasta
parent 0a08dbf3f4
commit 2c32a09f4e
No known key found for this signature in database
GPG Key ID: 52527BEDABE87984
8 changed files with 49 additions and 53 deletions

View File

@ -39,7 +39,7 @@ int CAddrInfo::GetNewBucket(const uint256& nKey, const CNetAddr& src, const std:
int CAddrInfo::GetBucketPosition(const uint256 &nKey, bool fNew, int nBucket) const int CAddrInfo::GetBucketPosition(const uint256 &nKey, bool fNew, int nBucket) const
{ {
uint64_t hash1 = (CHashWriter(SER_GETHASH, 0) << nKey << (fNew ? 'N' : 'K') << nBucket << GetKey()).GetCheapHash(); uint64_t hash1 = (CHashWriter(SER_GETHASH, 0) << nKey << (fNew ? uint8_t{'N'} : uint8_t{'K'}) << nBucket << GetKey()).GetCheapHash();
return hash1 % ADDRMAN_BUCKET_SIZE; return hash1 % ADDRMAN_BUCKET_SIZE;
} }
@ -762,7 +762,7 @@ std::vector<bool> CAddrMan::DecodeAsmap(fs::path path)
int length = ftell(filestr); int length = ftell(filestr);
LogPrintf("Opened asmap file %s (%d bytes) from disk\n", path, length); LogPrintf("Opened asmap file %s (%d bytes) from disk\n", path, length);
fseek(filestr, 0, SEEK_SET); fseek(filestr, 0, SEEK_SET);
char cur_byte; uint8_t cur_byte;
for (int i = 0; i < length; ++i) { for (int i = 0; i < length; ++i) {
file >> cur_byte; file >> cur_byte;
for (int bit = 0; bit < 8; ++bit) { for (int bit = 0; bit < 8; ++bit) {

View File

@ -4291,7 +4291,7 @@ void CaptureMessage(const CAddress& addr, const std::string& msg_type, const Spa
ser_writedata64(f, now.count()); ser_writedata64(f, now.count());
f.write(msg_type.data(), msg_type.length()); f.write(msg_type.data(), msg_type.length());
for (auto i = msg_type.length(); i < CMessageHeader::COMMAND_SIZE; ++i) { for (auto i = msg_type.length(); i < CMessageHeader::COMMAND_SIZE; ++i) {
f << '\0'; f << uint8_t{'\0'};
} }
uint32_t size = data.size(); uint32_t size = data.size();
ser_writedata32(f, size); ser_writedata32(f, size);

View File

@ -230,12 +230,8 @@ template<typename Stream, int N> inline void Unserialize(Stream& s, char (&a)[N]
template<typename Stream, int N> inline void Unserialize(Stream& s, unsigned char (&a)[N]) { s.read(CharCast(a), N); } template<typename Stream, int N> inline void Unserialize(Stream& s, unsigned char (&a)[N]) { s.read(CharCast(a), N); }
template<typename Stream> inline void Unserialize(Stream& s, Span<unsigned char>& span) { s.read(CharCast(span.data()), span.size()); } template<typename Stream> inline void Unserialize(Stream& s, Span<unsigned char>& span) { s.read(CharCast(span.data()), span.size()); }
template<typename Stream> inline void Serialize(Stream& s, bool a) { char f=a; ser_writedata8(s, f); } template <typename Stream> inline void Serialize(Stream& s, bool a) { uint8_t f = a; ser_writedata8(s, f); }
template<typename Stream> inline void Unserialize(Stream& s, bool& a) { char f=ser_readdata8(s); a=f; } template <typename Stream> inline void Unserialize(Stream& s, bool& a) { uint8_t f = ser_readdata8(s); a = f; }
/** /**

View File

@ -28,7 +28,7 @@ BOOST_AUTO_TEST_CASE(dbwrapper)
for (const bool obfuscate : {false, true}) { for (const bool obfuscate : {false, true}) {
fs::path ph = GetDataDir() / (obfuscate ? "dbwrapper_obfuscate_true" : "dbwrapper_obfuscate_false"); fs::path ph = GetDataDir() / (obfuscate ? "dbwrapper_obfuscate_true" : "dbwrapper_obfuscate_false");
CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate); CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate);
char key = 'k'; uint8_t key{'k'};
uint256 in = InsecureRand256(); uint256 in = InsecureRand256();
uint256 res; uint256 res;
@ -88,21 +88,21 @@ BOOST_AUTO_TEST_CASE(dbwrapper_basic_data)
BOOST_CHECK_EQUAL(res.ToString(), in_utxo.ToString()); BOOST_CHECK_EQUAL(res.ToString(), in_utxo.ToString());
//Simulate last block file number - "l" //Simulate last block file number - "l"
char key_last_blockfile_number = 'l'; uint8_t key_last_blockfile_number{'l'};
uint32_t lastblockfilenumber = InsecureRand32(); uint32_t lastblockfilenumber = InsecureRand32();
BOOST_CHECK(dbw.Write(key_last_blockfile_number, lastblockfilenumber)); BOOST_CHECK(dbw.Write(key_last_blockfile_number, lastblockfilenumber));
BOOST_CHECK(dbw.Read(key_last_blockfile_number, res_uint_32)); BOOST_CHECK(dbw.Read(key_last_blockfile_number, res_uint_32));
BOOST_CHECK_EQUAL(lastblockfilenumber, res_uint_32); BOOST_CHECK_EQUAL(lastblockfilenumber, res_uint_32);
//Simulate Is Reindexing - "R" //Simulate Is Reindexing - "R"
char key_IsReindexing = 'R'; uint8_t key_IsReindexing{'R'};
bool isInReindexing = InsecureRandBool(); bool isInReindexing = InsecureRandBool();
BOOST_CHECK(dbw.Write(key_IsReindexing, isInReindexing)); BOOST_CHECK(dbw.Write(key_IsReindexing, isInReindexing));
BOOST_CHECK(dbw.Read(key_IsReindexing, res_bool)); BOOST_CHECK(dbw.Read(key_IsReindexing, res_bool));
BOOST_CHECK_EQUAL(isInReindexing, res_bool); BOOST_CHECK_EQUAL(isInReindexing, res_bool);
//Simulate last block hash up to which UXTO covers - 'B' //Simulate last block hash up to which UXTO covers - 'B'
char key_lastblockhash_uxto = 'B'; uint8_t key_lastblockhash_uxto{'B'};
uint256 lastblock_hash = InsecureRand256(); uint256 lastblock_hash = InsecureRand256();
BOOST_CHECK(dbw.Write(key_lastblockhash_uxto, lastblock_hash)); BOOST_CHECK(dbw.Write(key_lastblockhash_uxto, lastblock_hash));
BOOST_CHECK(dbw.Read(key_lastblockhash_uxto, res)); BOOST_CHECK(dbw.Read(key_lastblockhash_uxto, res));
@ -129,11 +129,11 @@ BOOST_AUTO_TEST_CASE(dbwrapper_batch)
fs::path ph = GetDataDir() / (obfuscate ? "dbwrapper_batch_obfuscate_true" : "dbwrapper_batch_obfuscate_false"); fs::path ph = GetDataDir() / (obfuscate ? "dbwrapper_batch_obfuscate_true" : "dbwrapper_batch_obfuscate_false");
CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate); CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate);
char key = 'i'; uint8_t key{'i'};
uint256 in = InsecureRand256(); uint256 in = InsecureRand256();
char key2 = 'j'; uint8_t key2{'j'};
uint256 in2 = InsecureRand256(); uint256 in2 = InsecureRand256();
char key3 = 'k'; uint8_t key3{'k'};
uint256 in3 = InsecureRand256(); uint256 in3 = InsecureRand256();
uint256 res; uint256 res;
@ -166,10 +166,10 @@ BOOST_AUTO_TEST_CASE(dbwrapper_iterator)
CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate); CDBWrapper dbw(ph, (1 << 20), true, false, obfuscate);
// The two keys are intentionally chosen for ordering // The two keys are intentionally chosen for ordering
char key = 'j'; uint8_t key{'j'};
uint256 in = InsecureRand256(); uint256 in = InsecureRand256();
BOOST_CHECK(dbw.Write(key, in)); BOOST_CHECK(dbw.Write(key, in));
char key2 = 'k'; uint8_t key2{'k'};
uint256 in2 = InsecureRand256(); uint256 in2 = InsecureRand256();
BOOST_CHECK(dbw.Write(key2, in2)); BOOST_CHECK(dbw.Write(key2, in2));
@ -178,7 +178,7 @@ BOOST_AUTO_TEST_CASE(dbwrapper_iterator)
// Be sure to seek past the obfuscation key (if it exists) // Be sure to seek past the obfuscation key (if it exists)
it->Seek(key); it->Seek(key);
char key_res; uint8_t key_res;
uint256 val_res; uint256 val_res;
BOOST_REQUIRE(it->GetKey(key_res)); BOOST_REQUIRE(it->GetKey(key_res));
@ -207,7 +207,7 @@ BOOST_AUTO_TEST_CASE(existing_data_no_obfuscate)
// Set up a non-obfuscated wrapper to write some initial data. // Set up a non-obfuscated wrapper to write some initial data.
std::unique_ptr<CDBWrapper> dbw = std::make_unique<CDBWrapper>(ph, (1 << 10), false, false, false); std::unique_ptr<CDBWrapper> dbw = std::make_unique<CDBWrapper>(ph, (1 << 10), false, false, false);
char key = 'k'; uint8_t key{'k'};
uint256 in = InsecureRand256(); uint256 in = InsecureRand256();
uint256 res; uint256 res;
@ -248,7 +248,7 @@ BOOST_AUTO_TEST_CASE(existing_data_reindex)
// Set up a non-obfuscated wrapper to write some initial data. // Set up a non-obfuscated wrapper to write some initial data.
std::unique_ptr<CDBWrapper> dbw = std::make_unique<CDBWrapper>(ph, (1 << 10), false, false, false); std::unique_ptr<CDBWrapper> dbw = std::make_unique<CDBWrapper>(ph, (1 << 10), false, false, false);
char key = 'k'; uint8_t key{'k'};
uint256 in = InsecureRand256(); uint256 in = InsecureRand256();
uint256 res; uint256 res;
@ -334,7 +334,7 @@ struct StringContentsSerializer {
void Serialize(Stream& s) const void Serialize(Stream& s) const
{ {
for (size_t i = 0; i < str.size(); i++) { for (size_t i = 0; i < str.size(); i++) {
s << str[i]; s << uint8_t(str[i]);
} }
} }
@ -342,7 +342,7 @@ struct StringContentsSerializer {
void Unserialize(Stream& s) void Unserialize(Stream& s)
{ {
str.clear(); str.clear();
char c = 0; uint8_t c{0};
while (true) { while (true) {
try { try {
s >> c; s >> c;

View File

@ -24,7 +24,7 @@ protected:
CTransactionRef txval; CTransactionRef txval;
public: public:
CSerializeMethodsTestSingle() = default; CSerializeMethodsTestSingle() = default;
CSerializeMethodsTestSingle(int intvalin, bool boolvalin, std::string stringvalin, const char* charstrvalin, const CTransactionRef& txvalin) : intval(intvalin), boolval(boolvalin), stringval(std::move(stringvalin)), txval(txvalin) CSerializeMethodsTestSingle(int intvalin, bool boolvalin, std::string stringvalin, const uint8_t* charstrvalin, const CTransactionRef& txvalin) : intval(intvalin), boolval(boolvalin), stringval(std::move(stringvalin)), txval(txvalin)
{ {
memcpy(charstrval, charstrvalin, sizeof(charstrval)); memcpy(charstrval, charstrvalin, sizeof(charstrval));
} }
@ -70,8 +70,8 @@ BOOST_AUTO_TEST_CASE(sizes)
BOOST_CHECK_EQUAL(sizeof(uint32_t), GetSerializeSize(uint32_t(0), 0)); BOOST_CHECK_EQUAL(sizeof(uint32_t), GetSerializeSize(uint32_t(0), 0));
BOOST_CHECK_EQUAL(sizeof(int64_t), GetSerializeSize(int64_t(0), 0)); BOOST_CHECK_EQUAL(sizeof(int64_t), GetSerializeSize(int64_t(0), 0));
BOOST_CHECK_EQUAL(sizeof(uint64_t), GetSerializeSize(uint64_t(0), 0)); BOOST_CHECK_EQUAL(sizeof(uint64_t), GetSerializeSize(uint64_t(0), 0));
// Bool is serialized as char // Bool is serialized as uint8_t
BOOST_CHECK_EQUAL(sizeof(char), GetSerializeSize(bool(0), 0)); BOOST_CHECK_EQUAL(sizeof(uint8_t), GetSerializeSize(bool(0), 0));
// Sanity-check GetSerializeSize and c++ type matching // Sanity-check GetSerializeSize and c++ type matching
BOOST_CHECK_EQUAL(GetSerializeSize(char(0), 0), 1U); BOOST_CHECK_EQUAL(GetSerializeSize(char(0), 0), 1U);
@ -315,7 +315,7 @@ BOOST_AUTO_TEST_CASE(class_methods)
int intval(100); int intval(100);
bool boolval(true); bool boolval(true);
std::string stringval("testing"); std::string stringval("testing");
const char charstrval[16] = "testing charstr"; const uint8_t charstrval[16]{"testing charstr"};
CMutableTransaction txval; CMutableTransaction txval;
CTransactionRef tx_ref{MakeTransactionRef(txval)}; CTransactionRef tx_ref{MakeTransactionRef(txval)};
CSerializeMethodsTestSingle methodtest1(intval, boolval, stringval, charstrval, tx_ref); CSerializeMethodsTestSingle methodtest1(intval, boolval, stringval, charstrval, tx_ref);

View File

@ -16,26 +16,26 @@
#include <stdint.h> #include <stdint.h>
static const char DB_COIN = 'C'; static constexpr uint8_t DB_COIN{'C'};
static const char DB_COINS = 'c'; static constexpr uint8_t DB_COINS{'c'};
static const char DB_BLOCK_FILES = 'f'; static constexpr uint8_t DB_BLOCK_FILES{'f'};
static const char DB_ADDRESSINDEX = 'a'; static constexpr uint8_t DB_ADDRESSINDEX{'a'};
static const char DB_ADDRESSUNSPENTINDEX = 'u'; static constexpr uint8_t DB_ADDRESSUNSPENTINDEX{'u'};
static const char DB_TIMESTAMPINDEX = 's'; static constexpr uint8_t DB_TIMESTAMPINDEX{'s'};
static const char DB_SPENTINDEX = 'p'; static constexpr uint8_t DB_SPENTINDEX{'p'};
static const char DB_BLOCK_INDEX = 'b'; static constexpr uint8_t DB_BLOCK_INDEX{'b'};
static const char DB_BEST_BLOCK = 'B'; static constexpr uint8_t DB_BEST_BLOCK{'B'};
static const char DB_HEAD_BLOCKS = 'H'; static constexpr uint8_t DB_HEAD_BLOCKS{'H'};
static const char DB_FLAG = 'F'; static constexpr uint8_t DB_FLAG{'F'};
static const char DB_REINDEX_FLAG = 'R'; static constexpr uint8_t DB_REINDEX_FLAG{'R'};
static const char DB_LAST_BLOCK = 'l'; static constexpr uint8_t DB_LAST_BLOCK{'l'};
namespace { namespace {
struct CoinEntry { struct CoinEntry {
COutPoint* outpoint; COutPoint* outpoint;
char key; uint8_t key;
explicit CoinEntry(const COutPoint* ptr) : outpoint(const_cast<COutPoint*>(ptr)), key(DB_COIN) {} explicit CoinEntry(const COutPoint* ptr) : outpoint(const_cast<COutPoint*>(ptr)), key(DB_COIN) {}
SERIALIZE_METHODS(CoinEntry, obj) { READWRITE(obj.key, obj.outpoint->hash, VARINT(obj.outpoint->n)); } SERIALIZE_METHODS(CoinEntry, obj) { READWRITE(obj.key, obj.outpoint->hash, VARINT(obj.outpoint->n)); }
@ -147,7 +147,7 @@ bool CCoinsViewDB::BatchWrite(CCoinsMap &mapCoins, const uint256 &hashBlock) {
size_t CCoinsViewDB::EstimateSize() const size_t CCoinsViewDB::EstimateSize() const
{ {
return m_db->EstimateSize(DB_COIN, (char)(DB_COIN+1)); return m_db->EstimateSize(DB_COIN, uint8_t(DB_COIN + 1));
} }
CBlockTreeDB::CBlockTreeDB(size_t nCacheSize, bool fMemory, bool fWipe) : CDBWrapper(GetDataDir() / "blocks" / "index", nCacheSize, fMemory, fWipe) { CBlockTreeDB::CBlockTreeDB(size_t nCacheSize, bool fMemory, bool fWipe) : CDBWrapper(GetDataDir() / "blocks" / "index", nCacheSize, fMemory, fWipe) {
@ -159,7 +159,7 @@ bool CBlockTreeDB::ReadBlockFileInfo(int nFile, CBlockFileInfo &info) {
bool CBlockTreeDB::WriteReindexing(bool fReindexing) { bool CBlockTreeDB::WriteReindexing(bool fReindexing) {
if (fReindexing) if (fReindexing)
return Write(DB_REINDEX_FLAG, '1'); return Write(DB_REINDEX_FLAG, uint8_t{'1'});
else else
return Erase(DB_REINDEX_FLAG); return Erase(DB_REINDEX_FLAG);
} }
@ -396,14 +396,14 @@ bool CBlockTreeDB::ReadTimestampIndex(const unsigned int &high, const unsigned i
} }
bool CBlockTreeDB::WriteFlag(const std::string &name, bool fValue) { bool CBlockTreeDB::WriteFlag(const std::string &name, bool fValue) {
return Write(std::make_pair(DB_FLAG, name), fValue ? '1' : '0'); return Write(std::make_pair(DB_FLAG, name), fValue ? uint8_t{'1'} : uint8_t{'0'});
} }
bool CBlockTreeDB::ReadFlag(const std::string &name, bool &fValue) { bool CBlockTreeDB::ReadFlag(const std::string &name, bool &fValue) {
char ch; uint8_t ch;
if (!Read(std::make_pair(DB_FLAG, name), ch)) if (!Read(std::make_pair(DB_FLAG, name), ch))
return false; return false;
fValue = ch == '1'; fValue = ch == uint8_t{'1'};
return true; return true;
} }
@ -416,7 +416,7 @@ bool CBlockTreeDB::LoadBlockIndexGuts(const Consensus::Params& consensusParams,
// Load m_block_index // Load m_block_index
while (pcursor->Valid()) { while (pcursor->Valid()) {
if (ShutdownRequested()) return false; if (ShutdownRequested()) return false;
std::pair<char, uint256> key; std::pair<uint8_t, uint256> key;
if (pcursor->GetKey(key) && key.first == DB_BLOCK_INDEX) { if (pcursor->GetKey(key) && key.first == DB_BLOCK_INDEX) {
CDiskBlockIndex diskindex; CDiskBlockIndex diskindex;
if (pcursor->GetValue(diskindex)) { if (pcursor->GetValue(diskindex)) {

View File

@ -420,8 +420,8 @@ public:
mapValueCopy["timesmart"] = strprintf("%u", nTimeSmart); mapValueCopy["timesmart"] = strprintf("%u", nTimeSmart);
} }
std::vector<char> dummy_vector1; //!< Used to be vMerkleBranch std::vector<uint8_t> dummy_vector1; //!< Used to be vMerkleBranch
std::vector<char> dummy_vector2; //!< Used to be vtxPrev std::vector<uint8_t> dummy_vector2; //!< Used to be vtxPrev
bool dummy_bool = false; //!< Used to be fSpent bool dummy_bool = false; //!< Used to be fSpent
uint256 serializedHash = isAbandoned() ? ABANDON_HASH : m_confirm.hashBlock; uint256 serializedHash = isAbandoned() ? ABANDON_HASH : m_confirm.hashBlock;
int serializedIndex = isAbandoned() || isConflicted() ? -1 : m_confirm.nIndex; int serializedIndex = isAbandoned() || isConflicted() ? -1 : m_confirm.nIndex;

View File

@ -157,7 +157,7 @@ bool WalletBatch::WriteWatchOnly(const CScript &dest, const CKeyMetadata& keyMet
if (!WriteIC(std::make_pair(DBKeys::WATCHMETA, dest), keyMeta)) { if (!WriteIC(std::make_pair(DBKeys::WATCHMETA, dest), keyMeta)) {
return false; return false;
} }
return WriteIC(std::make_pair(DBKeys::WATCHS, dest), '1'); return WriteIC(std::make_pair(DBKeys::WATCHS, dest), uint8_t{'1'});
} }
bool WalletBatch::EraseWatchOnly(const CScript &dest) bool WalletBatch::EraseWatchOnly(const CScript &dest)
@ -277,8 +277,8 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
{ {
if (!ssValue.empty()) if (!ssValue.empty())
{ {
char fTmp; uint8_t fTmp;
char fUnused; uint8_t fUnused;
std::string unused_string; std::string unused_string;
ssValue >> fTmp >> fUnused >> unused_string; ssValue >> fTmp >> fUnused >> unused_string;
strErr = strprintf("LoadWallet() upgrading tx ver=%d %d %s", strErr = strprintf("LoadWallet() upgrading tx ver=%d %d %s",
@ -305,7 +305,7 @@ ReadKeyValue(CWallet* pwallet, CDataStream& ssKey, CDataStream& ssValue,
wss.nWatchKeys++; wss.nWatchKeys++;
CScript script; CScript script;
ssKey >> script; ssKey >> script;
char fYes; uint8_t fYes;
ssValue >> fYes; ssValue >> fYes;
if (fYes == '1') { if (fYes == '1') {
pwallet->GetOrCreateLegacyScriptPubKeyMan()->LoadWatchOnly(script); pwallet->GetOrCreateLegacyScriptPubKeyMan()->LoadWatchOnly(script);