diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2020-04-05 20:12:28 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2020-04-05 20:12:28 -0700 |
commit | 49d82c3b34227ec0520eb1cf1bb22083453b49a7 (patch) | |
tree | 96e32c168fcd37be665cdbcb8bfb380d87ff08c2 /lib.c | |
parent | 998a47a585ae540f0f3229dcd68b3d04ac657c36 (diff) | |
download | txr-49d82c3b34227ec0520eb1cf1bb22083453b49a7.tar.gz txr-49d82c3b34227ec0520eb1cf1bb22083453b49a7.tar.bz2 txr-49d82c3b34227ec0520eb1cf1bb22083453b49a7.zip |
warning cleanup: suspicious switch fallthrough cases.
This is the seventh round of an effort to enable GCC's -Wextra
option. Warnings about switch fallthrough situations are
addressed. GCC now has a diagnostic for this that is enabled
by -Wextra in such a way that if a fallthrough comment is
present, the diagnostic is suppressed. In much of the code,
we have such a comment. It's missing in a few places, or
misplaced. There are also some real bugs.
* hash.c (hash_buf): Add fallthrough comments to intentional
fallthrough cases.
(hash_hash_op): bugfix: add break statement. The 32 and 64
bit cases are independent (at compile time).
* lib.c (cdr, nullify, list_collect, empty): Add fallthrough
comment.
(int_str): Add missing break. This has not caused a
bug though because setting the octzero flag in the zerox
case is harmless to the logic which follows.
* linenoise.c (edit): Move misplaced fallthrough.
* sysif.c (fcntl_wrap): Bugfix: add missing break, without
which errno is tampered to hold EINVAL, in spite of a
successful F_SETLK, F_SETLKW or F_GETLK operation.
* unwind.h (jmp_restore): Declare noreturn, so that GCC
does not issue a false positive warning about a fallthrough
in uw_unwind_to_exit_point.
* utf8.c (utf8_from_buf, utf8_decode): Move a fallthrough
comment outside of preprocessing, so it is properly processed
by GCC's diagnostic.
Diffstat (limited to 'lib.c')
-rw-r--r-- | lib.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -601,6 +601,7 @@ val cdr(val cons) return funcall2(lambda_meth, cons, rcons(one, t)); } } + /* fallthrough */ default: type_mismatch(lit("cdr: ~s is not a cons"), cons, nao); } @@ -1061,6 +1062,7 @@ val nullify(val seq) if (nullify_meth) return funcall1(nullify_meth, seq); } + /* fallthrough */ default: return seq; } @@ -1107,6 +1109,7 @@ again: replace_obj(tailobj, items, t, t); return ptail; } + /* fallthrough */ default: uw_throwf(error_s, lit("cannot append ~s"), deref(ptail), nao); } @@ -4568,8 +4571,10 @@ val int_str(val str, val base) case 'x': case 'X': zerox = 1; wcs += 2; + break; default: octzero = 1; + break; } break; } @@ -10415,6 +10420,7 @@ val empty(val seq) return eq(funcall1(length_meth, seq), zero); return if3(nullify_meth && funcall1(nullify_meth, seq), nil, seq); } + /* fallthrough */ default: type_mismatch(lit("empty: ~s is not a sequence"), seq, nao); } |