[PATCH 15/23] ref_update_reject_duplicates(): add a sanity check
- From
Michael Haggerty <mhagger@alum.mit.edu>
- Date
- May 17, 2017, 12:05 UTC
- Message-ID
- <704a0263164527f09565cda207a9f31939badb60.1495014840.git.mhagger@alum.mit.edu>
- In-Reply-To
- <cover.1495014840.git.mhagger@alum.mit.edu>
It's pretty cheap to make sure that the caller didn't pass us an unsorted list by accident, so do so.
Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> --- refs.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/refs.c b/refs.c index ffc9bd0be5..68a0872562 100644 --- a/refs.c +++ b/refs.c @@ -1696,13 +1696,19 @@ int ref_update_reject_duplicates(struct string_list *refnames, assert(err); - for (i = 1; i < n; i++) - if (!strcmp(refnames->items[i - 1].string, refnames->items[i].string)) { + for (i = 1; i < n; i++) { + int cmp = strcmp(refnames->items[i - 1].string, + refnames->items[i].string); + + if (!cmp) { strbuf_addf(err, "multiple updates for ref '%s' not allowed.", refnames->items[i].string); return 1; + } else if (cmp > 0) { + die("BUG: ref_update_reject_duplicates() received unsorted list"); } + } return 0; }
-- 2.11.0