string-list: change "string_list_find_insert_index" return type to "size_t"

As "string_list_find_insert_index" is a simple wrapper of "get_entry_index" and the return type of "get_entry_index" is already "size_t", we could simply change its return type to "size_t". Update all callers to use size_t variables for storing the return value. The tricky fix is the loop condition in "mailmap.c" to properly handle "size_t" underflow by changing from `0 <= --i` to `i--`. Remove "DISABLE_SIGN_COMPARE_WARNINGS" from "mailmap.c" as it's no longer needed with the proper unsigned types. Signed-off-by: shejialuo <shejialuo@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

shejialuo committed Oct 6, 2025 at 14:32 UTC 51c3385e3736aeb5f78cc9ed193779e2cb4a2a29
5 files changed +14 -11
add-interactive.c
+1 -1
@@ -222,7 +222,7 @@ static void find_unique_prefixes(struct prefix_item_list *list)
222 static ssize_t find_unique(const char *string, struct prefix_item_list *list)
223 {
224 bool exact_match;
225 - int index = string_list_find_insert_index(&list->sorted, string, &exact_match);
225 + size_t index = string_list_find_insert_index(&list->sorted, string, &exact_match);
226 struct string_list_item *item;
227
228 if (list->items.nr != list->sorted.nr)
mailmap.c
+2 -3
@@ -1,5 +1,4 @@
1 #define USE_THE_REPOSITORY_VARIABLE
2 -#define DISABLE_SIGN_COMPARE_WARNINGS
2
3 #include "git-compat-util.h"
4 #include "environment.h"
@@ -244,7 +243,7 @@ static struct string_list_item *lookup_prefix(struct string_list *map,
243 const char *string, size_t len)
244 {
245 bool exact_match;
247 - int i = string_list_find_insert_index(map, string, &exact_match);
246 + size_t i = string_list_find_insert_index(map, string, &exact_match);
247 if (exact_match) {
248 if (!string[len])
249 return &map->items[i];
@@ -266,7 +265,7 @@ static struct string_list_item *lookup_prefix(struct string_list *map,
265 * overlong key would be inserted, which must come after the
266 * real location of the key if one exists.
267 */
269 - while (0 <= --i && i < map->nr) {
268 + while (i-- && i < map->nr) {
269 int cmp = strncasecmp(map->items[i].string, string, len);
270 if (cmp < 0)
271 /*
refs.c
+1 -3
@@ -1688,8 +1688,6 @@ const char *find_descendant_ref(const char *dirname,
1688 const struct string_list *extras,
1689 const struct string_list *skip)
1690 {
1691 - int pos;
1692 -
1691 if (!extras)
1692 return NULL;
1693
@@ -1699,7 +1697,7 @@ const char *find_descendant_ref(const char *dirname,
1697 * with dirname (remember, dirname includes the trailing
1698 * slash) and is not in skip, then we have a conflict.
1699 */
1702 - for (pos = string_list_find_insert_index(extras, dirname, NULL);
1700 + for (size_t pos = string_list_find_insert_index(extras, dirname, NULL);
1701 pos < extras->nr; pos++) {
1702 const char *extra_refname = extras->items[pos].string;
1703
string-list.c
+2 -2
@@ -91,8 +91,8 @@ bool string_list_has_string(const struct string_list *list, const char *string)
91 return exact_match;
92 }
93
94 -int string_list_find_insert_index(const struct string_list *list, const char *string,
95 - bool *exact_match)
94 +size_t string_list_find_insert_index(const struct string_list *list, const char *string,
95 + bool *exact_match)
96 {
97 return get_entry_index(list, string, exact_match);
98 }
string-list.h
+8 -2
@@ -173,8 +173,14 @@ void string_list_remove_empty_items(struct string_list *list, int free_util);
173
174 /** Determine if the string_list has a given string or not. */
175 bool string_list_has_string(const struct string_list *list, const char *string);
176 -int string_list_find_insert_index(const struct string_list *list, const char *string,
177 - bool *exact_match);
176 +
177 +/**
178 + * Find the index at which a new element should be inserted into the
179 + * string_list to maintain sorted order. If exact_match is not NULL,
180 + * it will be set to true if the string already exists in the list.
181 + */
182 +size_t string_list_find_insert_index(const struct string_list *list, const char *string,
183 + bool *exact_match);
184
185 /**
186 * Insert a new element to the string_list. The returned pointer can