mirror of
https://github.com/isar/libmdbx.git
synced 2025-09-14 15:02:21 +08:00
mdbx: fix rare/specific unexpected assertion failure bmi > 0
on 32-bit debug builds.
This commit is contained in:
@@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#if MDBX_ENABLE_DBI_SPARSE
|
#if MDBX_ENABLE_DBI_SPARSE
|
||||||
size_t dbi_bitmap_ctz_fallback(const MDBX_txn *txn, intptr_t bmi) {
|
size_t dbi_bitmap_ctz_fallback(const MDBX_txn *txn, intptr_t bmi) {
|
||||||
tASSERT(txn, bmi > 0);
|
tASSERT(txn, bmi != 0);
|
||||||
bmi &= -bmi;
|
bmi &= -bmi;
|
||||||
if (sizeof(txn->dbi_sparse[0]) > 4) {
|
if (sizeof(txn->dbi_sparse[0]) > 4) {
|
||||||
static const uint8_t debruijn_ctz64[64] = {0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28,
|
static const uint8_t debruijn_ctz64[64] = {0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28,
|
||||||
|
@@ -11,7 +11,7 @@ MDBX_NOTHROW_CONST_FUNCTION MDBX_MAYBE_UNUSED MDBX_INTERNAL size_t dbi_bitmap_ct
|
|||||||
intptr_t bmi);
|
intptr_t bmi);
|
||||||
|
|
||||||
static inline size_t dbi_bitmap_ctz(const MDBX_txn *txn, intptr_t bmi) {
|
static inline size_t dbi_bitmap_ctz(const MDBX_txn *txn, intptr_t bmi) {
|
||||||
tASSERT(txn, bmi > 0);
|
tASSERT(txn, bmi != 0);
|
||||||
STATIC_ASSERT(sizeof(bmi) >= sizeof(txn->dbi_sparse[0]));
|
STATIC_ASSERT(sizeof(bmi) >= sizeof(txn->dbi_sparse[0]));
|
||||||
#if __GNUC_PREREQ(4, 1) || __has_builtin(__builtin_ctzl)
|
#if __GNUC_PREREQ(4, 1) || __has_builtin(__builtin_ctzl)
|
||||||
if (sizeof(txn->dbi_sparse[0]) <= sizeof(int))
|
if (sizeof(txn->dbi_sparse[0]) <= sizeof(int))
|
||||||
|
Reference in New Issue
Block a user