From bdbbf3db686371e24d3a415149c553b7ccadf066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9B=D0=B5=D0=BE=D0=BD=D0=B8=D0=B4=20=D0=AE=D1=80=D1=8C?= =?UTF-8?q?=D0=B5=D0=B2=20=28Leonid=20Yuriev=29?= Date: Thu, 11 Sep 2025 19:06:14 +0300 Subject: [PATCH] mdbx: fix rare/specific unexpected assertion failure `bmi > 0` on 32-bit debug builds. --- src/dbi.c | 2 +- src/dbi.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dbi.c b/src/dbi.c index 70f08831..daf11783 100644 --- a/src/dbi.c +++ b/src/dbi.c @@ -5,7 +5,7 @@ #if MDBX_ENABLE_DBI_SPARSE size_t dbi_bitmap_ctz_fallback(const MDBX_txn *txn, intptr_t bmi) { - tASSERT(txn, bmi > 0); + tASSERT(txn, bmi != 0); bmi &= -bmi; 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, diff --git a/src/dbi.h b/src/dbi.h index 8e6cf4a9..5fdccb3e 100644 --- a/src/dbi.h +++ b/src/dbi.h @@ -11,7 +11,7 @@ MDBX_NOTHROW_CONST_FUNCTION MDBX_MAYBE_UNUSED MDBX_INTERNAL size_t dbi_bitmap_ct 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])); #if __GNUC_PREREQ(4, 1) || __has_builtin(__builtin_ctzl) if (sizeof(txn->dbi_sparse[0]) <= sizeof(int))