Make SafeDbt DB_DBT_MALLOC on default initialization

If we're constructing the SafeDbt without provided data, it is always malloced,
so that is the case we expose.

Also run clang-format.
This commit is contained in:
Ben Woosley 2018-11-24 20:49:08 -06:00
parent 1a9f9f7e5e
commit 4a86a0acd9
No known key found for this signature in database
GPG key ID: 6EE5F3785F78B345
2 changed files with 12 additions and 10 deletions

View file

@ -247,12 +247,12 @@ BerkeleyEnvironment::VerifyResult BerkeleyEnvironment::Verify(const std::string&
return (fRecovered ? VerifyResult::RECOVER_OK : VerifyResult::RECOVER_FAIL);
}
BerkeleyBatch::SafeDbt::SafeDbt(u_int32_t flags)
BerkeleyBatch::SafeDbt::SafeDbt()
{
m_dbt.set_flags(flags);
m_dbt.set_flags(DB_DBT_MALLOC);
}
BerkeleyBatch::SafeDbt::SafeDbt(void *data, size_t size)
BerkeleyBatch::SafeDbt::SafeDbt(void* data, size_t size)
: m_dbt(data, size)
{
}

View file

@ -170,13 +170,15 @@ private:
class BerkeleyBatch
{
/** RAII class that automatically cleanses its data on destruction */
class SafeDbt final {
class SafeDbt final
{
Dbt m_dbt;
public:
// construct Dbt with data or flags
SafeDbt(u_int32_t flags = 0);
SafeDbt(void *data, size_t size);
// construct Dbt with internally-managed data
SafeDbt();
// construct Dbt with provided data
SafeDbt(void* data, size_t size);
~SafeDbt();
// delegate to Dbt
@ -227,7 +229,7 @@ public:
SafeDbt datKey(ssKey.data(), ssKey.size());
// Read
SafeDbt datValue(DB_DBT_MALLOC);
SafeDbt datValue;
int ret = pdb->get(activeTxn, datKey, datValue, 0);
bool success = false;
if (datValue.get_data() != nullptr) {
@ -318,8 +320,8 @@ public:
int ReadAtCursor(Dbc* pcursor, CDataStream& ssKey, CDataStream& ssValue)
{
// Read at cursor
SafeDbt datKey(DB_DBT_MALLOC);
SafeDbt datValue(DB_DBT_MALLOC);
SafeDbt datKey;
SafeDbt datValue;
int ret = pcursor->get(datKey, datValue, DB_NEXT);
if (ret != 0)
return ret;