Add native support for serializing char arrays without FLATDATA
Support is added to serialize arrays of type char or unsigned char directly, without any wrappers. All invocations of the FLATDATA wrappers that are obsoleted by this are removed. This includes a patch by Russell Yanofsky to make char casting type safe. The serialization of CSubNet is changed to serialize a bool directly rather than though FLATDATA. This makes the serialization independent of the size of the bool type (and will use 1 byte everywhere).
This commit is contained in:
parent
4ba3d4f439
commit
a7c45bce92
8 changed files with 40 additions and 26 deletions
src
|
@ -22,8 +22,8 @@ bool SerializeDB(Stream& stream, const Data& data)
|
|||
// Write and commit header, data
|
||||
try {
|
||||
CHashWriter hasher(SER_DISK, CLIENT_VERSION);
|
||||
stream << FLATDATA(Params().MessageStart()) << data;
|
||||
hasher << FLATDATA(Params().MessageStart()) << data;
|
||||
stream << Params().MessageStart() << data;
|
||||
hasher << Params().MessageStart() << data;
|
||||
stream << hasher.GetHash();
|
||||
} catch (const std::exception& e) {
|
||||
return error("%s: Serialize or I/O error - %s", __func__, e.what());
|
||||
|
@ -66,7 +66,7 @@ bool DeserializeDB(Stream& stream, Data& data, bool fCheckSum = true)
|
|||
CHashVerifier<Stream> verifier(&stream);
|
||||
// de-serialize file header (network specific magic number) and ..
|
||||
unsigned char pchMsgTmp[4];
|
||||
verifier >> FLATDATA(pchMsgTmp);
|
||||
verifier >> pchMsgTmp;
|
||||
// ... verify the network matches ours
|
||||
if (memcmp(pchMsgTmp, Params().MessageStart(), sizeof(pchMsgTmp)))
|
||||
return error("%s: Invalid network magic number", __func__);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue