mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-05-21 09:22:18 +02:00
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:
parent
fa021e9a5b
commit
fa8a341b88
@ -804,7 +804,7 @@ std::string BerkeleyDatabaseVersion()
|
|||||||
return DbEnv::version(nullptr, nullptr, nullptr);
|
return DbEnv::version(nullptr, nullptr, nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BerkeleyBatch::ReadKey(CDataStream& key, CDataStream& value)
|
bool BerkeleyBatch::ReadKey(CDataStream&& key, CDataStream& value)
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return false;
|
return false;
|
||||||
@ -820,7 +820,7 @@ bool BerkeleyBatch::ReadKey(CDataStream& key, CDataStream& value)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BerkeleyBatch::WriteKey(CDataStream& key, CDataStream& value, bool overwrite)
|
bool BerkeleyBatch::WriteKey(CDataStream&& key, CDataStream&& value, bool overwrite)
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return true;
|
return true;
|
||||||
@ -835,7 +835,7 @@ bool BerkeleyBatch::WriteKey(CDataStream& key, CDataStream& value, bool overwrit
|
|||||||
return (ret == 0);
|
return (ret == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BerkeleyBatch::EraseKey(CDataStream& key)
|
bool BerkeleyBatch::EraseKey(CDataStream&& key)
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return false;
|
return false;
|
||||||
@ -848,7 +848,7 @@ bool BerkeleyBatch::EraseKey(CDataStream& key)
|
|||||||
return (ret == 0 || ret == DB_NOTFOUND);
|
return (ret == 0 || ret == DB_NOTFOUND);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BerkeleyBatch::HasKey(CDataStream& key)
|
bool BerkeleyBatch::HasKey(CDataStream&& key)
|
||||||
{
|
{
|
||||||
if (!pdb)
|
if (!pdb)
|
||||||
return false;
|
return false;
|
||||||
|
@ -189,10 +189,10 @@ class BerkeleyBatch
|
|||||||
};
|
};
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool ReadKey(CDataStream& key, CDataStream& value);
|
bool ReadKey(CDataStream&& key, CDataStream& value);
|
||||||
bool WriteKey(CDataStream& key, CDataStream& value, bool overwrite=true);
|
bool WriteKey(CDataStream&& key, CDataStream&& value, bool overwrite = true);
|
||||||
bool EraseKey(CDataStream& key);
|
bool EraseKey(CDataStream&& key);
|
||||||
bool HasKey(CDataStream& key);
|
bool HasKey(CDataStream&& key);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
Db* pdb;
|
Db* pdb;
|
||||||
@ -228,7 +228,7 @@ public:
|
|||||||
ssKey << key;
|
ssKey << key;
|
||||||
|
|
||||||
CDataStream ssValue(SER_DISK, CLIENT_VERSION);
|
CDataStream ssValue(SER_DISK, CLIENT_VERSION);
|
||||||
if (!ReadKey(ssKey, ssValue)) return false;
|
if (!ReadKey(std::move(ssKey), ssValue)) return false;
|
||||||
try {
|
try {
|
||||||
ssValue >> value;
|
ssValue >> value;
|
||||||
return true;
|
return true;
|
||||||
@ -248,7 +248,7 @@ public:
|
|||||||
ssValue.reserve(10000);
|
ssValue.reserve(10000);
|
||||||
ssValue << value;
|
ssValue << value;
|
||||||
|
|
||||||
return WriteKey(ssKey, ssValue, fOverwrite);
|
return WriteKey(std::move(ssKey), std::move(ssValue), fOverwrite);
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename K>
|
template <typename K>
|
||||||
@ -258,7 +258,7 @@ public:
|
|||||||
ssKey.reserve(1000);
|
ssKey.reserve(1000);
|
||||||
ssKey << key;
|
ssKey << key;
|
||||||
|
|
||||||
return EraseKey(ssKey);
|
return EraseKey(std::move(ssKey));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename K>
|
template <typename K>
|
||||||
@ -268,7 +268,7 @@ public:
|
|||||||
ssKey.reserve(1000);
|
ssKey.reserve(1000);
|
||||||
ssKey << key;
|
ssKey << key;
|
||||||
|
|
||||||
return HasKey(ssKey);
|
return HasKey(std::move(ssKey));
|
||||||
}
|
}
|
||||||
|
|
||||||
Dbc* GetCursor();
|
Dbc* GetCursor();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user