mirror of
https://github.com/isar/libmdbx.git
synced 2025-10-18 10:42:48 +08:00
mdbx: avoid paranoid CLANG's enum ops UB.
This commit is contained in:
13
mdbx.h
13
mdbx.h
@@ -483,9 +483,18 @@ typedef mode_t mdbx_mode_t;
|
||||
MDBX_CXX01_CONSTEXPR ENUM operator&(ENUM a, ENUM b) { \
|
||||
return ENUM(std::size_t(a) & std::size_t(b)); \
|
||||
} \
|
||||
MDBX_CXX01_CONSTEXPR ENUM operator&(ENUM a, size_t b) { \
|
||||
return ENUM(std::size_t(a) & b); \
|
||||
} \
|
||||
MDBX_CXX01_CONSTEXPR ENUM operator&(size_t a, ENUM b) { \
|
||||
return ENUM(a & std::size_t(b)); \
|
||||
} \
|
||||
MDBX_CXX14_CONSTEXPR ENUM &operator&=(ENUM &a, ENUM b) { return a = a & b; } \
|
||||
MDBX_CXX01_CONSTEXPR ENUM operator~(ENUM a) { \
|
||||
return ENUM(~std::size_t(a)); \
|
||||
MDBX_CXX14_CONSTEXPR ENUM &operator&=(ENUM &a, size_t b) { \
|
||||
return a = a & b; \
|
||||
} \
|
||||
MDBX_CXX01_CONSTEXPR std::size_t operator~(ENUM a) { \
|
||||
return ~std::size_t(a); \
|
||||
} \
|
||||
MDBX_CXX01_CONSTEXPR ENUM operator^(ENUM a, ENUM b) { \
|
||||
return ENUM(std::size_t(a) ^ std::size_t(b)); \
|
||||
|
Reference in New Issue
Block a user