Code

sha1_file.c: avoid gcc signed overflow warnings
authorJunio C Hamano <gitster@pobox.com>
Mon, 29 Oct 2007 18:53:55 +0000 (11:53 -0700)
committerJunio C Hamano <gitster@pobox.com>
Mon, 29 Oct 2007 18:56:57 +0000 (11:56 -0700)
commit7109c889f11b39a2c5a5122e3726be7ffce09faf
tree0d9ac8b963f90d3138e5bbc43a5fb7d47d8f865d
parent399f0a8eedeec209c2eb97be6285331087234644
sha1_file.c: avoid gcc signed overflow warnings

With the recent gcc, we get:

sha1_file.c: In check_packed_git_:
sha1_file.c:527: warning: assuming signed overflow does not
occur when assuming that (X + c) < X is always false
sha1_file.c:527: warning: assuming signed overflow does not
occur when assuming that (X + c) < X is always false

for a piece of code that tries to make sure that off_t is large
enough to hold more than 2^32 offset.  The test tried to make
sure these do not wrap-around:

    /* make sure we can deal with large pack offsets */
    off_t x = 0x7fffffffUL, y = 0xffffffffUL;
    if (x > (x + 1) || y > (y + 1)) {

but gcc assumes it can do whatever optimization it wants for a
signed overflow (undefined behaviour) and warns about this
construct.

Follow Linus's suggestion to check sizeof(off_t) instead to work
around the problem.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
sha1_file.c