mirror of
https://github.com/git/git.git
synced 2025-02-06 09:44:30 +00:00
commit-reach: use size_t
to track indices when computing merge bases
The functions `repo_get_merge_bases_many()` and friends accepts an array of commits as well as a parameter that indicates how large that array is. This parameter is using a signed integer, which leads to a couple of warnings with -Wsign-compare. Refactor the code to use `size_t` to track indices instead and adapt callers accordingly. While most callers are trivial, there are two callers that require a bit more scrutiny: - builtin/merge-base.c:show_merge_base() subtracts `1` from the `rev_nr` before calling `repo_get_merge_bases_many_dirty()`, so if the variable was `0` it would wrap. This code is fine though because its only caller will execute that code only when `argc >= 2`, and it follows that `rev_nr >= 2`, as well. - bisect.ccheck_merge_bases() similarly subtracts `1` from `rev_nr`. Again, there is only a single caller that populates `rev_nr` with `good_revs.nr`. And because a bisection always requires at least one good revision it follws that `rev_nr >= 1`. Mark the file as -Wsign-compare-clean. Signed-off-by: Patrick Steinhardt <ps@pks.im> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
parent
455ac07021
commit
5e7fe8a7b8
2
bisect.c
2
bisect.c
@ -855,7 +855,7 @@ static void handle_skipped_merge_base(const struct object_id *mb)
|
||||
* for early success, this will be converted back to 0 in
|
||||
* check_good_are_ancestors_of_bad().
|
||||
*/
|
||||
static enum bisect_error check_merge_bases(int rev_nr, struct commit **rev, int no_checkout)
|
||||
static enum bisect_error check_merge_bases(size_t rev_nr, struct commit **rev, int no_checkout)
|
||||
{
|
||||
enum bisect_error res = BISECT_OK;
|
||||
struct commit_list *result = NULL;
|
||||
|
@ -8,7 +8,7 @@
|
||||
#include "parse-options.h"
|
||||
#include "commit-reach.h"
|
||||
|
||||
static int show_merge_base(struct commit **rev, int rev_nr, int show_all)
|
||||
static int show_merge_base(struct commit **rev, size_t rev_nr, int show_all)
|
||||
{
|
||||
struct commit_list *result = NULL, *r;
|
||||
|
||||
@ -149,7 +149,7 @@ int cmd_merge_base(int argc,
|
||||
struct repository *repo UNUSED)
|
||||
{
|
||||
struct commit **rev;
|
||||
int rev_nr = 0;
|
||||
size_t rev_nr = 0;
|
||||
int show_all = 0;
|
||||
int cmdmode = 0;
|
||||
int ret;
|
||||
|
@ -1,5 +1,4 @@
|
||||
#define USE_THE_REPOSITORY_VARIABLE
|
||||
#define DISABLE_SIGN_COMPARE_WARNINGS
|
||||
|
||||
#include "git-compat-util.h"
|
||||
#include "commit.h"
|
||||
@ -421,7 +420,7 @@ static int remove_redundant(struct repository *r, struct commit **array,
|
||||
|
||||
static int get_merge_bases_many_0(struct repository *r,
|
||||
struct commit *one,
|
||||
int n,
|
||||
size_t n,
|
||||
struct commit **twos,
|
||||
int cleanup,
|
||||
struct commit_list **result)
|
||||
@ -469,7 +468,7 @@ static int get_merge_bases_many_0(struct repository *r,
|
||||
|
||||
int repo_get_merge_bases_many(struct repository *r,
|
||||
struct commit *one,
|
||||
int n,
|
||||
size_t n,
|
||||
struct commit **twos,
|
||||
struct commit_list **result)
|
||||
{
|
||||
@ -478,7 +477,7 @@ int repo_get_merge_bases_many(struct repository *r,
|
||||
|
||||
int repo_get_merge_bases_many_dirty(struct repository *r,
|
||||
struct commit *one,
|
||||
int n,
|
||||
size_t n,
|
||||
struct commit **twos,
|
||||
struct commit_list **result)
|
||||
{
|
||||
|
@ -14,12 +14,12 @@ int repo_get_merge_bases(struct repository *r,
|
||||
struct commit *rev2,
|
||||
struct commit_list **result);
|
||||
int repo_get_merge_bases_many(struct repository *r,
|
||||
struct commit *one, int n,
|
||||
struct commit *one, size_t n,
|
||||
struct commit **twos,
|
||||
struct commit_list **result);
|
||||
/* To be used only when object flags after this call no longer matter */
|
||||
int repo_get_merge_bases_many_dirty(struct repository *r,
|
||||
struct commit *one, int n,
|
||||
struct commit *one, size_t n,
|
||||
struct commit **twos,
|
||||
struct commit_list **result);
|
||||
|
||||
|
@ -35,7 +35,7 @@ int cmd__reach(int ac, const char **av)
|
||||
struct commit_list *X, *Y;
|
||||
struct object_array X_obj = OBJECT_ARRAY_INIT;
|
||||
struct commit **X_array, **Y_array;
|
||||
int X_nr, X_alloc, Y_nr, Y_alloc;
|
||||
size_t X_nr, X_alloc, Y_nr, Y_alloc;
|
||||
struct strbuf buf = STRBUF_INIT;
|
||||
struct repository *r = the_repository;
|
||||
|
||||
@ -157,7 +157,7 @@ int cmd__reach(int ac, const char **av)
|
||||
clear_contains_cache(&cache);
|
||||
} else if (!strcmp(av[1], "get_reachable_subset")) {
|
||||
const int reachable_flag = 1;
|
||||
int i, count = 0;
|
||||
int count = 0;
|
||||
struct commit_list *current;
|
||||
struct commit_list *list = get_reachable_subset(X_array, X_nr,
|
||||
Y_array, Y_nr,
|
||||
@ -169,7 +169,7 @@ int cmd__reach(int ac, const char **av)
|
||||
oid_to_hex(&list->item->object.oid));
|
||||
count++;
|
||||
}
|
||||
for (i = 0; i < Y_nr; i++) {
|
||||
for (size_t i = 0; i < Y_nr; i++) {
|
||||
if (Y_array[i]->object.flags & reachable_flag)
|
||||
count--;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user