Re: [PATCH 1/1] refs.c: fix -Wsign-compare warnings
Moumita <dhar61595@gmail.com> writes:
Show 7 quoted lines
> Remove DISABLE_SIGN_COMPARE_WARNINGS from refs.c and fix integer
> comparison issues that caused -Wsign-compare warnings.
>
> Tested using `make DEVELOPER=1` and `make t` to ensure correctness.
> ---
> refs.c | 11 ++++++-----
> 1 file changed, 6 insertions(+), 5 deletions(-)
I think this is wrong.
The string-list structure is screwed up in its use of types.
The alloc/nr pair to keep track of the number and insert index of the elements were updated to size_t in 2022 but that change was incomplete. The API function string_list_find_insert_index() that returns the index into list still return "int", and that is what needs to be corrected, no?
Show 20 quoted lines
> diff --git a/refs.c b/refs.c
> index 37b8cfb90c..e5cb7acfbe 100644
> --- a/refs.c
> +++ b/refs.c
> @@ -3,7 +3,7 @@
> */
>
> #define USE_THE_REPOSITORY_VARIABLE
> -#define DISABLE_SIGN_COMPARE_WARNINGS
> +
>
> #include "git-compat-util.h"
> #include "advice.h"
> @@ -1652,7 +1652,7 @@ const char *find_descendant_ref(const char *dirname,
> * slash) and is not in skip, then we have a conflict.
> */
> for (pos = string_list_find_insert_index(extras, dirname, 0);
> - pos < extras->nr; pos++) {
> + (size_t)pos < extras->nr; pos++) {
> const char *extra_refname = extras->items[pos].string;Show 7 quoted lines
> @@ -2304,7 +2304,8 @@ static int run_transaction_hook(struct ref_transaction *transaction,
> struct child_process proc = CHILD_PROCESS_INIT;
> struct strbuf buf = STRBUF_INIT;
> const char *hook;
> - int ret = 0, i;
> + int ret = 0;
> + size_t i ;
This may be OK, as .nr is of size_t.
Show 11 quoted lines
> hook = find_hook(transaction->ref_store->repo, "reference-transaction");
> if (!hook)
> @@ -2635,9 +2636,9 @@ void ref_transaction_for_each_queued_update(struct ref_transaction *transaction,
> ref_transaction_for_each_queued_update_fn cb,
> void *cb_data)
> {
> - int i;
> + size_t i;
>
> - for (i = 0; i < transaction->nr; i++) {
> + for ( i = 0; i < transaction->nr; i++) {It is also wrong to add SP there.
> struct ref_update *update = transaction->updates[i];
>
> cb(update->refname,