summaryrefslogtreecommitdiffstats
path: root/lib.c
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2020-04-05 20:12:28 -0700
committerKaz Kylheku <kaz@kylheku.com>2020-04-05 20:12:28 -0700
commit49d82c3b34227ec0520eb1cf1bb22083453b49a7 (patch)
tree96e32c168fcd37be665cdbcb8bfb380d87ff08c2 /lib.c
parent998a47a585ae540f0f3229dcd68b3d04ac657c36 (diff)
downloadtxr-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.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib.c b/lib.c
index c61cf60d..6fae0008 100644
--- a/lib.c
+++ b/lib.c
@@ -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);
}