cleanup: fix possible overflow errors in binary search
authorDerrick Stolee <dstolee@microsoft.com>
Sun, 8 Oct 2017 18:29:37 +0000 (14:29 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Oct 2017 23:57:24 +0000 (08:57 +0900)
commit19716b21a4255ecc7148b54ab2c78039c59f25bf
tree5f1cecbffc543c64e7c4c4f371d204424e1ce1bb
parent217f2767cbcb562872437eed4dec62e00846d90c
cleanup: fix possible overflow errors in binary search

A common mistake when writing binary search is to allow possible
integer overflow by using the simple average:

mid = (min + max) / 2;

Instead, use the overflow-safe version:

mid = min + (max - min) / 2;

This translation is safe since the operation occurs inside a loop
conditioned on "min < max". The included changes were found using
the following git grep:

git grep '/ *2;' '*.c'

Making this cleanup will prevent future review friction when a new
binary search is contructed based on existing code.

Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Reviewed-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
12 files changed:
builtin/index-pack.c
builtin/pack-objects.c
builtin/unpack-objects.c
cache-tree.c
compat/regex/regex_internal.c
compat/regex/regexec.c
packfile.c
sha1-lookup.c
sha1_name.c
string-list.c
utf8.c
xdiff/xpatience.c