mirror of
https://gitflic.ru/project/erthink/libmdbx.git
synced 2025-01-10 02:06:47 +00:00
mdbx: исправление критической ошибки в TXN_FOREACH_DBI_FROM
.
Какие-либо выпуски и стабильные ветки не были затронуты проблемой.
Ошибка была внесена 2023-11-05 коммитом e6af7d7c53
в ветку `devel`.
Большое спасибо команде Erigon и особенно Алексею Шарову за помощь в поиске причины проблемы.
This commit is contained in:
parent
bdff60e6a7
commit
d603de4a87
@ -3924,8 +3924,10 @@ static __inline size_t dbi_bitmap_ctz(const MDBX_txn *txn, intptr_t bmi) {
|
||||
bitmap_item = TXN->mt_dbi_sparse[0] >> FROM, I = FROM; \
|
||||
I < TXN->mt_numdbs; ++I) \
|
||||
if (bitmap_item == 0) { \
|
||||
I |= bitmap_chunk - 1; \
|
||||
I = (I - 1) | (bitmap_chunk - 1); \
|
||||
bitmap_item = TXN->mt_dbi_sparse[(1 + I) / bitmap_chunk]; \
|
||||
if (!bitmap_item) \
|
||||
I += bitmap_chunk; \
|
||||
continue; \
|
||||
} else if ((bitmap_item & 1) == 0) { \
|
||||
size_t bitmap_skip = dbi_bitmap_ctz(txn, bitmap_item); \
|
||||
|
Loading…
Reference in New Issue
Block a user