ref_update_reject_duplicates(): add a sanity check
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Michael Haggerty committed
May 22, 2017 at 16:17 UTC
8556f8d61330ec677dc48b0ef39e2017d6927708
1 file changed
+8
-2
refs.c
+8
-2
@@ -1709,13 +1709,19 @@ int ref_update_reject_duplicates(struct string_list *refnames,
1709
1710
assert(err);
1711
1712
- for (i = 1; i < n; i++)
1713
- if (!strcmp(refnames->items[i - 1].string, refnames->items[i].string)) {
1712
+ for (i = 1; i < n; i++) {
1713
+ int cmp = strcmp(refnames->items[i - 1].string,
1714
+ refnames->items[i].string);
1715
+
1716
+ if (!cmp) {
1717
strbuf_addf(err,
1718
"multiple updates for ref '%s' not allowed.",
1719
refnames->items[i].string);
1720
return 1;
1721
+ } else if (cmp > 0) {
1722
+ die("BUG: ref_update_reject_duplicates() received unsorted list");
1723
}
1724
+ }
1725
return 0;
1726
}
1727