diff --git a/src/defs.h b/src/defs.h index fd68852b..b0721087 100644 --- a/src/defs.h +++ b/src/defs.h @@ -139,6 +139,14 @@ # endif #endif /* __deprecated */ +#ifndef __fallthrough +# if __GNUC_PREREQ(7, 0) || __has_attribute(fallthrough) +# define __fallthrough __attribute__((fallthrough)) +# else +# define __fallthrough do {} while(0) +# endif +#endif /* __fallthrough */ + #ifndef __packed # if defined(__GNUC__) || __has_attribute(packed) # define __packed __attribute__((packed)) diff --git a/src/mdbx.c b/src/mdbx.c index c617ce6c..db096513 100644 --- a/src/mdbx.c +++ b/src/mdbx.c @@ -7067,7 +7067,8 @@ int mdbx_cursor_put(MDBX_cursor *mc, MDBX_val *key, MDBX_val *data, offset *= 4; /* space for 4 more */ break; } - /* FALLTHRU: Big enough MDBX_DUPFIXED sub-page */ + /* FALLTHRU: Big enough MDBX_DUPFIXaED sub-page */ + __fallthrough; case MDBX_CURRENT | MDBX_NODUPDATA: case MDBX_CURRENT: fp->mp_flags |= P_DIRTY; diff --git a/src/tools/mdbx_chk.c b/src/tools/mdbx_chk.c index a2216929..ef2184ff 100644 --- a/src/tools/mdbx_chk.c +++ b/src/tools/mdbx_chk.c @@ -718,6 +718,7 @@ static int check_meta_head(bool steady) { assert(false); error(" - unexpected internal error (%s)\n", steady ? "meta_steady_head" : "meta_weak_head"); + __fallthrough; case 0: if (envinfo.mi_meta0_txnid != envinfo.mi_recent_txnid) { print(" - meta-%d txn-id mismatch recent-txn-id (%" PRIi64 " != %" PRIi64 diff --git a/src/tools/mdbx_dump.c b/src/tools/mdbx_dump.c index 45a6e963..d0f9a911 100644 --- a/src/tools/mdbx_dump.c +++ b/src/tools/mdbx_dump.c @@ -195,6 +195,7 @@ int main(int argc, char *argv[]) { case 'l': list = 1; /*FALLTHROUGH*/; + __fallthrough; case 'a': if (subname) usage(prog); diff --git a/test/config.h b/test/config.h index c2ac1389..4c9aa214 100644 --- a/test/config.h +++ b/test/config.h @@ -271,6 +271,7 @@ struct actor_config : public config::actor_config_pod { case ac_hill: if (!params.test_nops || params.test_nops >= nops) return true; + __fallthrough; default: return false; }