Revision 2ae38f2a65abae910ff7ad62861414d4333d01fc authored by Jeff King on 09 November 2016, 03:57:28 UTC, committed by Jeff King on 09 November 2016, 03:59:24 UTC
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 <peff@peff.net>
1 parent 791eb87
History
File Mode Size
am-test-1-1 -rw-r--r-- 312 bytes
am-test-1-2 -rw-r--r-- 315 bytes
am-test-2-1 -rw-r--r-- 330 bytes
am-test-2-2 -rw-r--r-- 333 bytes
am-test-3-1 -rw-r--r-- 350 bytes
am-test-3-2 -rw-r--r-- 340 bytes
am-test-4-1 -rw-r--r-- 354 bytes
am-test-4-2 -rw-r--r-- 388 bytes
am-test-5-1 -rw-r--r-- 308 bytes
am-test-5-2 -rw-r--r-- 287 bytes
am-test-6-1 -rw-r--r-- 266 bytes
file-1-0 -rw-r--r-- 14 bytes
file-2-0 -rw-r--r-- 14 bytes

back to top