mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-11-26 05:48:20 +01:00
Merge #19320: wallet: Replace CDataStream& with CDataStream&& where appropriate
fa8a341b88wallet: Replace CDataStream& with CDataStream&& where appropriate (MarcoFalke)fa021e9a5bwallet: Remove confusing double return value ret+success (MarcoFalke) Pull request description: 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. ACKs for top commit: sipa: utACKfa8a341b88ryanofsky: Code review ACKfa8a341b88. Nice changes. Tree-SHA512: 5c0218bae0f3cd2a07346f1bbf4ad232e5dde7ef2f807d82cc6cfd208d11fe60c8b0f37e7986087b52fbfc79cdfd33c3c8a5822b3d4d9a44d1c6b09e354fc424
This commit is contained in:
@@ -796,15 +796,13 @@ 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;
|
||||
|
||||
// Key
|
||||
SafeDbt datKey(key.data(), key.size());
|
||||
|
||||
// Read
|
||||
SafeDbt datValue;
|
||||
int ret = pdb->get(activeTxn, datKey, datValue, 0);
|
||||
if (ret == 0 && datValue.get_data() != nullptr) {
|
||||
@@ -814,48 +812,41 @@ 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;
|
||||
if (fReadOnly)
|
||||
assert(!"Write called on database in read-only mode");
|
||||
|
||||
// Key
|
||||
SafeDbt datKey(key.data(), key.size());
|
||||
|
||||
// Value
|
||||
SafeDbt datValue(value.data(), value.size());
|
||||
|
||||
// Write
|
||||
int ret = pdb->put(activeTxn, datKey, datValue, (overwrite ? 0 : DB_NOOVERWRITE));
|
||||
return (ret == 0);
|
||||
}
|
||||
|
||||
bool BerkeleyBatch::EraseKey(CDataStream& key)
|
||||
bool BerkeleyBatch::EraseKey(CDataStream&& key)
|
||||
{
|
||||
if (!pdb)
|
||||
return false;
|
||||
if (fReadOnly)
|
||||
assert(!"Erase called on database in read-only mode");
|
||||
|
||||
// Key
|
||||
SafeDbt datKey(key.data(), key.size());
|
||||
|
||||
// Erase
|
||||
int ret = pdb->del(activeTxn, datKey, 0);
|
||||
return (ret == 0 || ret == DB_NOTFOUND);
|
||||
}
|
||||
|
||||
bool BerkeleyBatch::HasKey(CDataStream& key)
|
||||
bool BerkeleyBatch::HasKey(CDataStream&& key)
|
||||
{
|
||||
if (!pdb)
|
||||
return false;
|
||||
|
||||
// Key
|
||||
SafeDbt datKey(key.data(), key.size());
|
||||
|
||||
// Exists
|
||||
int ret = pdb->exists(activeTxn, datKey, 0);
|
||||
return ret == 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user