Skip to content

Commit 51c3385

Browse files
shejialuogitster
authored andcommitted
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 <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent e8a32e7 commit 51c3385

File tree

5 files changed

+14
-11
lines changed

5 files changed

+14
-11
lines changed

add-interactive.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ static void find_unique_prefixes(struct prefix_item_list *list)
222222
static ssize_t find_unique(const char *string, struct prefix_item_list *list)
223223
{
224224
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);
226226
struct string_list_item *item;
227227

228228
if (list->items.nr != list->sorted.nr)

mailmap.c

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
#define USE_THE_REPOSITORY_VARIABLE
2-
#define DISABLE_SIGN_COMPARE_WARNINGS
32

43
#include "git-compat-util.h"
54
#include "environment.h"
@@ -244,7 +243,7 @@ static struct string_list_item *lookup_prefix(struct string_list *map,
244243
const char *string, size_t len)
245244
{
246245
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);
248247
if (exact_match) {
249248
if (!string[len])
250249
return &map->items[i];
@@ -266,7 +265,7 @@ static struct string_list_item *lookup_prefix(struct string_list *map,
266265
* overlong key would be inserted, which must come after the
267266
* real location of the key if one exists.
268267
*/
269-
while (0 <= --i && i < map->nr) {
268+
while (i-- && i < map->nr) {
270269
int cmp = strncasecmp(map->items[i].string, string, len);
271270
if (cmp < 0)
272271
/*

refs.c

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1688,8 +1688,6 @@ const char *find_descendant_ref(const char *dirname,
16881688
const struct string_list *extras,
16891689
const struct string_list *skip)
16901690
{
1691-
int pos;
1692-
16931691
if (!extras)
16941692
return NULL;
16951693

@@ -1699,7 +1697,7 @@ const char *find_descendant_ref(const char *dirname,
16991697
* with dirname (remember, dirname includes the trailing
17001698
* slash) and is not in skip, then we have a conflict.
17011699
*/
1702-
for (pos = string_list_find_insert_index(extras, dirname, NULL);
1700+
for (size_t pos = string_list_find_insert_index(extras, dirname, NULL);
17031701
pos < extras->nr; pos++) {
17041702
const char *extra_refname = extras->items[pos].string;
17051703

string-list.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,8 @@ bool string_list_has_string(const struct string_list *list, const char *string)
9191
return exact_match;
9292
}
9393

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)
9696
{
9797
return get_entry_index(list, string, exact_match);
9898
}

string-list.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,14 @@ void string_list_remove_empty_items(struct string_list *list, int free_util);
173173

174174
/** Determine if the string_list has a given string or not. */
175175
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);
178184

179185
/**
180186
* Insert a new element to the string_list. The returned pointer can

0 commit comments

Comments
 (0)