diff options
| author | Patrick Steinhardt <ps@pks.im> | 2024-12-27 11:46:29 +0100 |
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2024-12-27 08:12:40 -0800 |
| commit | 5e7fe8a7b89a07d8c3ab298ac69bc33f6ba88b47 (patch) | |
| tree | c3d944cce3fb235e37a28ad15bdce6561e523cc5 /commit-reach.h | |
| parent | shallow: fix -Wsign-compare warnings (diff) | |
| download | git-5e7fe8a7b89a07d8c3ab298ac69bc33f6ba88b47.tar.gz git-5e7fe8a7b89a07d8c3ab298ac69bc33f6ba88b47.zip | |
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>
Diffstat (limited to 'commit-reach.h')
| -rw-r--r-- | commit-reach.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/commit-reach.h b/commit-reach.h index fa5408054a..6012402dfc 100644 --- a/commit-reach.h +++ b/commit-reach.h @@ -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); |
