mdbx: переработка проверки курсоров на входе API-функций с добавлением cursor_check().

This commit is contained in:
Леонид Юрьев (Leonid Yuriev)
2025-03-15 22:00:36 +03:00
parent 6c8047a402
commit aeac971f0b
9 changed files with 149 additions and 175 deletions

View File

@@ -388,7 +388,10 @@ int txn_check_badbits_parked(const MDBX_txn *txn, int bad_bits) {
* - но при распарковке поломанные транзакции завершаются.
* - получается что транзакцию можно припарковать, потом поломать вызвав
* mdbx_txn_break(), но далее любое её использование приведет к завершению
* при распарковке. */
* при распарковке.
*
* Поэтому для припаркованных транзакций возвращается ошибка если не-включена
* авто-распарковка, либо есть другие плохие биты. */
if ((txn->flags & (bad_bits | MDBX_TXN_AUTOUNPARK)) != (MDBX_TXN_PARKED | MDBX_TXN_AUTOUNPARK))
return LOG_IFERR(MDBX_BAD_TXN);