From 098d46fbf4a61d2be79817f05fedc55801d7aa68 Mon Sep 17 00:00:00 2001 From: George Hazan Date: Wed, 28 Mar 2018 23:10:50 +0300 Subject: fix for losing info due to MDBX_RESERVE flag --- plugins/Dbx_mdbx/src/dbcrypt.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'plugins/Dbx_mdbx/src/dbcrypt.cpp') 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 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; } -- cgit v1.2.3