Browse Source

Fix subscript[0] in validation.cpp

0.15
Jeremy Rubin 7 years ago
parent
commit
4cac0d1e04
  1. 12
      src/serialize.h
  2. 2
      src/validation.cpp

12
src/serialize.h

@ -450,7 +450,7 @@ public:
} }
string.resize(size); string.resize(size);
if (size != 0) if (size != 0)
s.read((char*)&string[0], size); s.read((char*)string.data(), size);
} }
template<typename Stream> template<typename Stream>
@ -458,7 +458,7 @@ public:
{ {
WriteCompactSize(s, string.size()); WriteCompactSize(s, string.size());
if (!string.empty()) if (!string.empty())
s.write((char*)&string[0], string.size()); s.write((char*)string.data(), string.size());
} }
}; };
@ -556,7 +556,7 @@ void Serialize(Stream& os, const std::basic_string<C>& str)
{ {
WriteCompactSize(os, str.size()); WriteCompactSize(os, str.size());
if (!str.empty()) if (!str.empty())
os.write((char*)&str[0], str.size() * sizeof(str[0])); os.write((char*)str.data(), str.size() * sizeof(C));
} }
template<typename Stream, typename C> template<typename Stream, typename C>
@ -565,7 +565,7 @@ void Unserialize(Stream& is, std::basic_string<C>& str)
unsigned int nSize = ReadCompactSize(is); unsigned int nSize = ReadCompactSize(is);
str.resize(nSize); str.resize(nSize);
if (nSize != 0) if (nSize != 0)
is.read((char*)&str[0], nSize * sizeof(str[0])); is.read((char*)str.data(), nSize * sizeof(C));
} }
@ -578,7 +578,7 @@ void Serialize_impl(Stream& os, const prevector<N, T>& v, const unsigned char&)
{ {
WriteCompactSize(os, v.size()); WriteCompactSize(os, v.size());
if (!v.empty()) if (!v.empty())
os.write((char*)&v[0], v.size() * sizeof(T)); os.write((char*)v.data(), v.size() * sizeof(T));
} }
template<typename Stream, unsigned int N, typename T, typename V> template<typename Stream, unsigned int N, typename T, typename V>
@ -646,7 +646,7 @@ void Serialize_impl(Stream& os, const std::vector<T, A>& v, const unsigned char&
{ {
WriteCompactSize(os, v.size()); WriteCompactSize(os, v.size());
if (!v.empty()) if (!v.empty())
os.write((char*)&v[0], v.size() * sizeof(T)); os.write((char*)v.data(), v.size() * sizeof(T));
} }
template<typename Stream, typename T, typename A, typename V> template<typename Stream, typename T, typename A, typename V>

2
src/validation.cpp

@ -2890,7 +2890,7 @@ std::vector<unsigned char> GenerateCoinbaseCommitment(CBlock& block, const CBloc
if (consensusParams.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout != 0) { if (consensusParams.vDeployments[Consensus::DEPLOYMENT_SEGWIT].nTimeout != 0) {
if (commitpos == -1) { if (commitpos == -1) {
uint256 witnessroot = BlockWitnessMerkleRoot(block, NULL); uint256 witnessroot = BlockWitnessMerkleRoot(block, NULL);
CHash256().Write(witnessroot.begin(), 32).Write(&ret[0], 32).Finalize(witnessroot.begin()); CHash256().Write(witnessroot.begin(), 32).Write(ret.data(), 32).Finalize(witnessroot.begin());
CTxOut out; CTxOut out;
out.nValue = 0; out.nValue = 0;
out.scriptPubKey.resize(38); out.scriptPubKey.resize(38);

Loading…
Cancel
Save