(1 << i) < hspace is compared in the `int` space rather that in the unsigned one. the result will be wrong if hspace is between 0x40000000 and 0x80000000. Signed-off-by: Pierre Habouzit <madcoder@xxxxxxxxxx> --- I'm currently trying to make git compile with more strict gcc flags (-g -O2 -Wall -Wextra -Wno-unused -Werror to be precise) and I've spotted a first bug due to a signed/unsigned comparison. If I do understand that bit of code, it should not bite a lot of people, but this is still a bug ;) diff-delta.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/diff-delta.c b/diff-delta.c index 7da9205..a1fadc9 100644 --- a/diff-delta.c +++ b/diff-delta.c @@ -152,7 +152,7 @@ struct delta_index * create_delta_index( initialization in create_delta(). */ entries = (bufsize - 1) / RABIN_WINDOW; hsize = entries / 4; - for (i = 4; (1 << i) < hsize && i < 31; i++); + for (i = 4; (unsigned)(1 << i) < hsize && i < 31; i++); hsize = 1 << i; hmask = hsize - 1; -- 1.4.1.1 - To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html