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