Skip to content

Commit 2ae38f2

Browse files
committed
sequencer: silence -Wtautological-constant-out-of-range-compare
When clang compiles sequencer.c, it complains: sequencer.c:632:14: warning: comparison of constant 2 with expression of type 'const enum todo_command' is always true [-Wtautological-constant-out-of-range-compare] if (command < ARRAY_SIZE(todo_command_strings)) This is because "command" is an enum that may only have two values (0 and 1) and the array in question has two elements. As it turns out, clang is actually wrong here, at least according to its own bug tracker: https://llvm.org/bugs/show_bug.cgi?id=16154 But it's still worth working around this, as the warning is present with -Wall, meaning we fail compilation with "make DEVELOPER=1". Casting the enum to size_t sufficiently unconfuses clang. As a bonus, it also catches any possible out-of-bounds access if the enum takes on a negative value (which shouldn't happen either, but again, this is a defensive check). Signed-off-by: Jeff King <[email protected]>
1 parent 791eb87 commit 2ae38f2

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

sequencer.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -629,7 +629,7 @@ static const char *todo_command_strings[] = {
629629

630630
static const char *command_to_string(const enum todo_command command)
631631
{
632-
if (command < ARRAY_SIZE(todo_command_strings))
632+
if ((size_t)command < ARRAY_SIZE(todo_command_strings))
633633
return todo_command_strings[command];
634634
die("Unknown command: %d", command);
635635
}

0 commit comments

Comments
 (0)