wallet: Replace CDataStream& with CDataStream&& where appropriate

The keys and values are only to be used once because their memory is set
to zero. Make that explicit by moving the bytes into the lower level
methods.
This commit is contained in:
MarcoFalke 2020-06-20 08:55:07 -04:00
parent fa021e9a5b
commit fa8a341b88
No known key found for this signature in database
GPG Key ID: CE2B75697E69A548
2 changed files with 12 additions and 12 deletions

View File

@ -804,7 +804,7 @@ std::string BerkeleyDatabaseVersion()
return DbEnv::version(nullptr, nullptr, nullptr);
}
bool BerkeleyBatch::ReadKey(CDataStream& key, CDataStream& value)
bool BerkeleyBatch::ReadKey(CDataStream&& key, CDataStream& value)
{
if (!pdb)
return false;
@ -820,7 +820,7 @@ bool BerkeleyBatch::ReadKey(CDataStream& key, CDataStream& value)
return false;
}
bool BerkeleyBatch::WriteKey(CDataStream& key, CDataStream& value, bool overwrite)
bool BerkeleyBatch::WriteKey(CDataStream&& key, CDataStream&& value, bool overwrite)
{
if (!pdb)
return true;
@ -835,7 +835,7 @@ bool BerkeleyBatch::WriteKey(CDataStream& key, CDataStream& value, bool overwrit
return (ret == 0);
}
bool BerkeleyBatch::EraseKey(CDataStream& key)
bool BerkeleyBatch::EraseKey(CDataStream&& key)
{
if (!pdb)
return false;
@ -848,7 +848,7 @@ bool BerkeleyBatch::EraseKey(CDataStream& key)
return (ret == 0 || ret == DB_NOTFOUND);
}
bool BerkeleyBatch::HasKey(CDataStream& key)
bool BerkeleyBatch::HasKey(CDataStream&& key)
{
if (!pdb)
return false;

View File

@ -189,10 +189,10 @@ class BerkeleyBatch
};
private:
bool ReadKey(CDataStream& key, CDataStream& value);
bool WriteKey(CDataStream& key, CDataStream& value, bool overwrite=true);
bool EraseKey(CDataStream& key);
bool HasKey(CDataStream& key);
bool ReadKey(CDataStream&& key, CDataStream& value);
bool WriteKey(CDataStream&& key, CDataStream&& value, bool overwrite = true);
bool EraseKey(CDataStream&& key);
bool HasKey(CDataStream&& key);
protected:
Db* pdb;
@ -228,7 +228,7 @@ public:
ssKey << key;
CDataStream ssValue(SER_DISK, CLIENT_VERSION);
if (!ReadKey(ssKey, ssValue)) return false;
if (!ReadKey(std::move(ssKey), ssValue)) return false;
try {
ssValue >> value;
return true;
@ -248,7 +248,7 @@ public:
ssValue.reserve(10000);
ssValue << value;
return WriteKey(ssKey, ssValue, fOverwrite);
return WriteKey(std::move(ssKey), std::move(ssValue), fOverwrite);
}
template <typename K>
@ -258,7 +258,7 @@ public:
ssKey.reserve(1000);
ssKey << key;
return EraseKey(ssKey);
return EraseKey(std::move(ssKey));
}
template <typename K>
@ -268,7 +268,7 @@ public:
ssKey.reserve(1000);
ssKey << key;
return HasKey(ssKey);
return HasKey(std::move(ssKey));
}
Dbc* GetCursor();