diff options
author | Junio C Hamano <gitster@pobox.com> | 2017-10-11 14:52:24 +0900 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2017-10-11 14:52:24 +0900 |
commit | 7245ee3d6cd0c7eea81b57260badc6fcda5d8ffd (patch) | |
tree | 2fc0707b95acb28a22bc07c62a83878523d00ff0 /compat | |
parent | 952cc9b9bd668c5f05c9faf81f80cea905642eec (diff) | |
parent | 19716b21a4255ecc7148b54ab2c78039c59f25bf (diff) | |
download | git-7245ee3d6cd0c7eea81b57260badc6fcda5d8ffd.tar.gz |
Merge branch 'ds/avoid-overflow-in-midpoint-computation'
Code clean-up.
* ds/avoid-overflow-in-midpoint-computation:
cleanup: fix possible overflow errors in binary search
Diffstat (limited to 'compat')
-rw-r--r-- | compat/regex/regex_internal.c | 4 | ||||
-rw-r--r-- | compat/regex/regexec.c | 2 |
2 files changed, 3 insertions, 3 deletions
diff --git a/compat/regex/regex_internal.c b/compat/regex/regex_internal.c index d4121f2f4f..98342b8316 100644 --- a/compat/regex/regex_internal.c +++ b/compat/regex/regex_internal.c @@ -613,7 +613,7 @@ re_string_reconstruct (re_string_t *pstr, int idx, int eflags) int low = 0, high = pstr->valid_len, mid; do { - mid = (high + low) / 2; + mid = low + (high - low) / 2; if (pstr->offsets[mid] > offset) high = mid; else if (pstr->offsets[mid] < offset) @@ -1394,7 +1394,7 @@ re_node_set_contains (const re_node_set *set, int elem) right = set->nelem - 1; while (idx < right) { - mid = (idx + right) / 2; + mid = idx + (right - idx) / 2; if (set->elems[mid] < elem) idx = mid + 1; else diff --git a/compat/regex/regexec.c b/compat/regex/regexec.c index 0a745d9c3b..6f2b48a78b 100644 --- a/compat/regex/regexec.c +++ b/compat/regex/regexec.c @@ -4284,7 +4284,7 @@ search_cur_bkref_entry (const re_match_context_t *mctx, int str_idx) last = right = mctx->nbkref_ents; for (left = 0; left < right;) { - mid = (left + right) / 2; + mid = left + (right - left) / 2; if (mctx->bkref_ents[mid].str_idx < str_idx) left = mid + 1; else |