summaryrefslogtreecommitdiff
path: root/plugins/Dbx_mdbx/src/dbcrypt.cpp
diff options
context:
space:
mode:
authorGeorge Hazan <ghazan@miranda.im>2018-03-28 23:10:50 +0300
committerGeorge Hazan <ghazan@miranda.im>2018-03-28 23:10:50 +0300
commit098d46fbf4a61d2be79817f05fedc55801d7aa68 (patch)
treeb96c551c522d7bab41330b89ecd5c6ffc77e67f4 /plugins/Dbx_mdbx/src/dbcrypt.cpp
parentdcd16671be887922a68edc4e5020fdc8fe4a6dd1 (diff)
fix for losing info due to MDBX_RESERVE flag
Diffstat (limited to 'plugins/Dbx_mdbx/src/dbcrypt.cpp')
-rw-r--r--plugins/Dbx_mdbx/src/dbcrypt.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/plugins/Dbx_mdbx/src/dbcrypt.cpp b/plugins/Dbx_mdbx/src/dbcrypt.cpp
index 31c2a24b76..0a6585e565 100644
--- a/plugins/Dbx_mdbx/src/dbcrypt.cpp
+++ b/plugins/Dbx_mdbx/src/dbcrypt.cpp
@@ -201,10 +201,9 @@ int CDbxMDBX::EnableEncryption(bool bEncrypted)
dwNewFlags = dbEvent->flags | DBEF_ENCRYPTED;
}
- txn_ptr trnlck(StartTran());
data.iov_len = sizeof(DBEvent) + nNewBlob;
- if (mdbx_put(trnlck, m_dbEvents, &key, &data, MDBX_RESERVE) != MDBX_SUCCESS)
- return 1;
+ mir_ptr<BYTE> pData((BYTE*)mir_alloc(data.iov_len));
+ data.iov_base = pData.get();
DBEvent *pNewDBEvent = (DBEvent *)data.iov_base;
*pNewDBEvent = *dbEvent;
@@ -212,6 +211,10 @@ int CDbxMDBX::EnableEncryption(bool bEncrypted)
pNewDBEvent->flags = dwNewFlags;
memcpy(pNewDBEvent + 1, pNewBlob, nNewBlob);
+ txn_ptr trnlck(StartTran());
+ if (mdbx_put(trnlck, m_dbEvents, &key, &data, 0) != MDBX_SUCCESS)
+ return 1;
+
if (trnlck.commit() != MDBX_SUCCESS)
return 1;
}