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
t4105-apply-fuzz.sh
#!/bin/sh
test_description='apply with fuzz and offset'
. ./test-lib.sh
dotest () {
name="$1" && shift &&
test_expect_success "$name" "
git checkout-index -f -q -u file &&
git apply $* &&
test_cmp expect file
"
}
test_expect_success setup '
for i in 1 2 3 4 5 6 7 8 9 10 11 12
do
echo $i
done >file &&
git update-index --add file &&
for i in 1 2 3 4 5 6 7 a b c d e 8 9 10 11 12
do
echo $i
done >file &&
cat file >expect &&
git diff >O0.diff &&
sed -e "s/@@ -5,6 +5,11 @@/@@ -2,6 +2,11 @@/" >O1.diff O0.diff &&
sed -e "s/@@ -5,6 +5,11 @@/@@ -7,6 +7,11 @@/" >O2.diff O0.diff &&
sed -e "s/@@ -5,6 +5,11 @@/@@ -19,6 +19,11 @@/" >O3.diff O0.diff &&
sed -e "s/^ 5/ S/" >F0.diff O0.diff &&
sed -e "s/^ 5/ S/" >F1.diff O1.diff &&
sed -e "s/^ 5/ S/" >F2.diff O2.diff &&
sed -e "s/^ 5/ S/" >F3.diff O3.diff
'
dotest 'unmodified patch' O0.diff
dotest 'minus offset' O1.diff
dotest 'plus offset' O2.diff
dotest 'big offset' O3.diff
dotest 'fuzz with no offset' -C2 F0.diff
dotest 'fuzz with minus offset' -C2 F1.diff
dotest 'fuzz with plus offset' -C2 F2.diff
dotest 'fuzz with big offset' -C2 F3.diff
test_done
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...