diff options
author | Nicolas Williams <nico@cryptonector.com> | 2023-07-10 18:28:33 -0500 |
---|---|---|
committer | Emanuele Torre <torreemanuele6@gmail.com> | 2023-07-30 04:25:54 +0200 |
commit | c8b30dff4a573e5efc23e30a5074011e39832e2c (patch) | |
tree | 664dd57be13c38405c3d2ae437165b221bb2b892 | |
parent | a6eb055c47c980bba4ebdc60b026f2311e5a800a (diff) |
Add JQ_FALLTHROUGH and use it to quiet warnings
-rw-r--r-- | src/execute.c | 3 | ||||
-rw-r--r-- | src/jv.c | 2 | ||||
-rw-r--r-- | src/jv.h | 7 | ||||
-rw-r--r-- | src/jv_dtoa.c | 12 |
4 files changed, 22 insertions, 2 deletions
diff --git a/src/execute.c b/src/execute.c index 198ad266..78910077 100644 --- a/src/execute.c +++ b/src/execute.c @@ -575,6 +575,7 @@ jv jq_next(jq_state *jq) { case STOREVN: stack_save(jq, pc - 1, stack_get_pos(jq)); + JQ_FALLTHROUGH; case STOREV: { uint16_t level = *pc++; uint16_t v = *pc++; @@ -742,7 +743,7 @@ jv jq_next(jq_state *jq) { } stack_push(jq, container); stack_push(jq, jv_number(-1)); - // fallthrough + JQ_FALLTHROUGH; } case ON_BACKTRACK(EACH): case ON_BACKTRACK(EACH_OPT): { @@ -1222,7 +1222,9 @@ static uint32_t jvp_string_hash(jv jstr) { switch(len & 3) { case 3: k1 ^= tail[2] << 16; + JQ_FALLTHROUGH; case 2: k1 ^= tail[1] << 8; + JQ_FALLTHROUGH; case 1: k1 ^= tail[0]; k1 *= c1; k1 = rotl32(k1,15); k1 *= c2; h1 ^= k1; } @@ -5,6 +5,13 @@ #include <stdint.h> #include <stdio.h> +#if (defined(__GNUC__) && __GNUC__ >= 7) || \ + (defined(__clang__) && __clang_major__ >= 10) +# define JQ_FALLTHROUGH __attribute__((fallthrough)) +#else +# define JQ_FALLTHROUGH do {} while (0) /* fallthrough */ +#endif + typedef enum { JV_KIND_INVALID, JV_KIND_NULL, diff --git a/src/jv_dtoa.c b/src/jv_dtoa.c index 33feb99b..70ad793e 100644 --- a/src/jv_dtoa.c +++ b/src/jv_dtoa.c @@ -195,6 +195,7 @@ #include "jv_dtoa.h" #include "jv_alloc.h" +#include "jv.h" #define MALLOC jv_mem_alloc #define FREE jv_mem_free @@ -1723,6 +1724,7 @@ gethex(struct dtoa_context* C, CONST char **sp, U *rvp, int rounding, int sign) case '-': esign = 1; /* no break */ + JQ_FALLTHROUGH; case '+': s++; } @@ -2327,7 +2329,10 @@ retlow1: jvp_strtod (struct dtoa_context* C, const char *s00, char **se) { - int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1, test_scale; + int bb2, bb5, bbe, bd2, bd5, bbbits, bs2, c, e, e1; +#ifdef Honor_FLT_ROUNDS + int test_scale; +#endif int esign, i, j, k, nd, nd0, nf, nz, nz0, nz1, sign; CONST char *s, *s0, *s1; double aadj, aadj1; @@ -2367,10 +2372,12 @@ jvp_strtod case '-': sign = 1; /* no break */ + JQ_FALLTHROUGH; case '+': if (*++s) goto break2; /* no break */ + JQ_FALLTHROUGH; case 0: goto ret0; case '\t': @@ -2478,6 +2485,7 @@ jvp_strtod switch(c = *++s) { case '-': esign = 1; + JQ_FALLTHROUGH; case '+': c = *++s; } @@ -3699,6 +3707,7 @@ jvp_dtoa case 2: leftright = 0; /* no break */ + JQ_FALLTHROUGH; case 4: if (ndigits <= 0) ndigits = 1; @@ -3707,6 +3716,7 @@ jvp_dtoa case 3: leftright = 0; /* no break */ + JQ_FALLTHROUGH; case 5: i = ndigits + k + 1; ilim = i; |