From f0c6aa464652e158f78c124b60d741664a8a6b0f 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: Mon, 7 Nov 2022 00:14:24 +0300 Subject: [PATCH] mdbx: workaround for false-positives from Valgrind bug. --- src/core.c | 3 +++ src/internals.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/core.c b/src/core.c index 74ec3854..10e874aa 100644 --- a/src/core.c +++ b/src/core.c @@ -5256,6 +5256,9 @@ static __inline void meta_troika_unpack(meta_troika_t *troika, troika->recent = (packed >> 2) & 3; troika->prefer_steady = (packed >> 4) & 3; troika->tail_and_flags = packed & 0xC3; +#if MDBX_WORDBITS > 32 /* Workaround for false-positives from Valgrind */ + troika->unused_pad = 0; +#endif } static const uint8_t troika_fsm_map[2 * 2 * 2 * 3 * 3 * 3] = { diff --git a/src/internals.h b/src/internals.h index 28282414..55b17b3b 100644 --- a/src/internals.h +++ b/src/internals.h @@ -976,6 +976,9 @@ typedef struct MDBX_dbx { typedef struct troika { uint8_t fsm, recent, prefer_steady, tail_and_flags; +#if MDBX_WORDBITS > 32 /* Workaround for false-positives from Valgrind */ + uint32_t unused_pad; +#endif #define TROIKA_HAVE_STEADY(troika) ((troika)->fsm & 7) #define TROIKA_STRICT_VALID(troika) ((troika)->tail_and_flags & 64) #define TROIKA_VALID(troika) ((troika)->tail_and_flags & 128)