Skip to content

Commit

Permalink
Fix a pointer issue
Browse files Browse the repository at this point in the history
  • Loading branch information
acid-chicken committed Sep 28, 2018
1 parent 11f7e27 commit 1afdd56
Show file tree
Hide file tree
Showing 21 changed files with 239 additions and 156 deletions.
7 changes: 4 additions & 3 deletions src/addrdb.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand All @@ -23,8 +24,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());
Expand Down Expand Up @@ -67,7 +68,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__);
Expand Down
3 changes: 2 additions & 1 deletion src/addrman.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2012 Pieter Wuille
// Copyright (c) 2012-2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand Down Expand Up @@ -59,7 +60,7 @@ class CAddrInfo : public CAddress

template <typename Stream, typename Operation>
inline void SerializationOp(Stream& s, Operation ser_action) {
READWRITE(*(CAddress*)this);
READWRITEAS(CAddress, *this);
READWRITE(source);
READWRITE(nLastSuccess);
READWRITE(nAttempts);
Expand Down
7 changes: 4 additions & 3 deletions src/blockencodings.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// Copyright (c) 2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand Down Expand Up @@ -90,11 +91,11 @@ class BlockTransactions {
while (txn.size() < txn_size) {
txn.resize(std::min((uint64_t)(1000 + txn.size()), txn_size));
for (; i < txn.size(); i++)
READWRITE(REF(TransactionCompressor(txn[i])));
READWRITE(TransactionCompressor(txn[i]));
}
} else {
for (size_t i = 0; i < txn.size(); i++)
READWRITE(REF(TransactionCompressor(txn[i])));
READWRITE(TransactionCompressor(txn[i]));
}
}
};
Expand All @@ -115,7 +116,7 @@ struct PrefilledTransaction {
if (idx > std::numeric_limits<uint16_t>::max())
throw std::ios_base::failure("index overflowed 16-bits");
index = idx;
READWRITE(REF(TransactionCompressor(tx)));
READWRITE(TransactionCompressor(tx));
}
};

Expand Down
5 changes: 3 additions & 2 deletions src/coins.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand Down Expand Up @@ -60,7 +61,7 @@ class Coin
assert(!IsSpent());
uint32_t code = nHeight * 2 + fCoinBase;
::Serialize(s, VARINT(code));
::Serialize(s, CTxOutCompressor(REF(out)));
::Serialize(s, CTxOutCompressor(out));
}

template<typename Stream>
Expand All @@ -69,7 +70,7 @@ class Coin
::Unserialize(s, VARINT(code));
nHeight = code >> 1;
fCoinBase = code & 1;
::Unserialize(s, REF(CTxOutCompressor(out)));
::Unserialize(s, CTxOutCompressor(out));
}

bool IsSpent() const {
Expand Down
10 changes: 6 additions & 4 deletions src/compressor.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand All @@ -9,6 +10,7 @@
#include "primitives/transaction.h"
#include "script/script.h"
#include "serialize.h"
#include "span.h"

class CKeyID;
class CPubKey;
Expand Down Expand Up @@ -59,12 +61,12 @@ class CScriptCompressor
void Serialize(Stream &s) const {
std::vector<unsigned char> compr;
if (Compress(compr)) {
s << CFlatData(compr);
s << MakeSpan(compr);
return;
}
unsigned int nSize = script.size() + nSpecialScripts;
s << VARINT(nSize);
s << CFlatData(script);
s << MakeSpan(script);
}

template<typename Stream>
Expand All @@ -73,7 +75,7 @@ class CScriptCompressor
s >> VARINT(nSize);
if (nSize < nSpecialScripts) {
std::vector<unsigned char> vch(GetSpecialSize(nSize), 0x00);
s >> REF(CFlatData(vch));
s >> MakeSpan(vch);
Decompress(nSize, vch);
return;
}
Expand All @@ -84,7 +86,7 @@ class CScriptCompressor
s.ignore(nSize);
} else {
script.resize(nSize);
s >> REF(CFlatData(script));
s >> MakeSpan(script);
}
}
};
Expand Down
3 changes: 2 additions & 1 deletion src/hash.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand Down Expand Up @@ -187,7 +188,7 @@ class CHashVerifier : public CHashWriter
}

template<typename T>
CHashVerifier<Source>& operator>>(T& obj)
CHashVerifier<Source>& operator>>(T&& obj)
{
// Unserialize from this stream
::Unserialize(*this, obj);
Expand Down
17 changes: 8 additions & 9 deletions src/netaddress.h
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand All @@ -11,6 +12,7 @@

#include "compat.h"
#include "serialize.h"
#include "span.h"

#include <stdint.h>
#include <string>
Expand Down Expand Up @@ -93,7 +95,7 @@ class CNetAddr

template <typename Stream, typename Operation>
inline void SerializationOp(Stream& s, Operation ser_action) {
READWRITE(FLATDATA(ip));
READWRITE(ip);
}

friend class CSubNet;
Expand Down Expand Up @@ -131,16 +133,16 @@ class CSubNet
template <typename Stream, typename Operation>
inline void SerializationOp(Stream& s, Operation ser_action) {
READWRITE(network);
READWRITE(FLATDATA(netmask));
READWRITE(FLATDATA(valid));
READWRITE(netmask);
READWRITE(valid);
}
};

/** A combination of a network address (CNetAddr) and a (TCP) port */
class CService : public CNetAddr
{
protected:
unsigned short port; // host order
uint16_t port; // host order

public:
CService();
Expand All @@ -166,11 +168,8 @@ class CService : public CNetAddr

template <typename Stream, typename Operation>
inline void SerializationOp(Stream& s, Operation ser_action) {
READWRITE(FLATDATA(ip));
unsigned short portN = htons(port);
READWRITE(FLATDATA(portN));
if (ser_action.ForRead())
port = ntohs(portN);
READWRITE(ip);
READWRITE(WrapBigEndian(port));
}
};

Expand Down
3 changes: 2 additions & 1 deletion src/primitives/block.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand Down Expand Up @@ -93,7 +94,7 @@ class CBlock : public CBlockHeader

template <typename Stream, typename Operation>
inline void SerializationOp(Stream& s, Operation ser_action) {
READWRITE(*(CBlockHeader*)this);
READWRITEAS(CBlockHeader, *this);
READWRITE(vtx);
}

Expand Down
9 changes: 5 additions & 4 deletions src/protocol.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand Down Expand Up @@ -50,10 +51,10 @@ class CMessageHeader
template <typename Stream, typename Operation>
inline void SerializationOp(Stream& s, Operation ser_action)
{
READWRITE(FLATDATA(pchMessageStart));
READWRITE(FLATDATA(pchCommand));
READWRITE(pchMessageStart);
READWRITE(pchCommand);
READWRITE(nMessageSize);
READWRITE(FLATDATA(pchChecksum));
READWRITE(pchChecksum);
}

char pchMessageStart[MESSAGE_START_SIZE];
Expand Down Expand Up @@ -302,7 +303,7 @@ class CAddress : public CService
uint64_t nServicesInt = nServices;
READWRITE(nServicesInt);
nServices = (ServiceFlags)nServicesInt;
READWRITE(*(CService*)this);
READWRITEAS(CService, *this);
}

// TODO: make private (improves encapsulation)
Expand Down
3 changes: 2 additions & 1 deletion src/script/bitcoinconsensus.cpp
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand Down Expand Up @@ -40,7 +41,7 @@ class TxInputStream
}

template<typename T>
TxInputStream& operator>>(T& obj)
TxInputStream& operator>>(T&& obj)
{
::Unserialize(*this, obj);
return *this;
Expand Down
3 changes: 2 additions & 1 deletion src/script/script.h
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// Copyright (c) 2009-2010 Satoshi Nakamoto
// Copyright (c) 2009-2016 The Bitcoin Core developers
// Copyright (c) 2018 The BitZeny Core developers
// Distributed under the MIT software license, see the accompanying
// file COPYING or http://www.opensource.org/licenses/mit-license.php.

Expand Down Expand Up @@ -409,7 +410,7 @@ class CScript : public CScriptBase

template <typename Stream, typename Operation>
inline void SerializationOp(Stream& s, Operation ser_action) {
READWRITE(static_cast<CScriptBase&>(*this));
READWRITEAS(CScriptBase, *this);
}

CScript& operator+=(const CScript& b)
Expand Down
Loading

0 comments on commit 1afdd56

Please sign in to comment.