All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org, Johannes Schindelin <johannes.schindelin@gmx.de>
Subject: Re: [PATCH 1/3] add -p: avoid ambiguous signed/unsigned comparison
Date: Tue, 30 Aug 2022 12:09:29 -0700	[thread overview]
Message-ID: <xmqqtu5tk0pi.fsf@gitster.g> (raw)
In-Reply-To: 0691d7eaaa03e8bf8b460b9e20ec05eec09fb574.1661867664.git.gitgitgadget@gmail.com

"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:

> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> In the interactive `add` operation, users can choose to jump to specific
> hunks, and Git will present the hunk list in that case. To avoid showing
> too many lines at once, only a maximum of 21 hunks are shown, skipping
> the "mode change" pseudo hunk.

Wow.

While the whole "add -i" was what I started, I admit that everything
more recent than the support of the "edit" action in "add -p" is
foreign to me.  I didn't remember the existence of, and the
justification for, the 20-line limit.  It seems that this came from
3f6aff68 (Add subroutine to display one-line summary of hunks,
2008-12-04).

> The comparison performed to skip the "mode change" pseudo hunk (if any)
> compares a signed integer `i` to the unsigned value `mode_change` (which
> can be 0 or 1 because it is a 1-bit type).

OK, that warrants a casting to signed, surely.

> Note: This is a long-standing bug in the Visual C build of Git, but it
> has never been caught because t3701 is skipped when `NO_PERL` is set,
> which is the case in the `vs-test` jobs of Git's CI runs.

Good finding.

> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
>  add-patch.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/add-patch.c b/add-patch.c
> index 509ca04456b..3524555e2b0 100644
> --- a/add-patch.c
> +++ b/add-patch.c
> @@ -1547,7 +1547,7 @@ soft_increment:
>  			strbuf_remove(&s->answer, 0, 1);
>  			strbuf_trim(&s->answer);
>  			i = hunk_index - DISPLAY_HUNKS_LINES / 2;
> -			if (i < file_diff->mode_change)
> +			if (i < (int)file_diff->mode_change)
>  				i = file_diff->mode_change;
>  			while (s->answer.len == 0) {
>  				i = display_hunks(s, file_diff, i);

  reply	other threads:[~2022-08-30 19:09 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-30 13:54 [PATCH 0/3] A couple of CI fixes regarding the built-in add --patch Johannes Schindelin via GitGitGadget
2022-08-30 13:54 ` [PATCH 1/3] add -p: avoid ambiguous signed/unsigned comparison Johannes Schindelin via GitGitGadget
2022-08-30 19:09   ` Junio C Hamano [this message]
2022-08-30 13:54 ` [PATCH 2/3] t3701: test the built-in `add -i` regardless of NO_PERL Johannes Schindelin via GitGitGadget
2022-08-30 18:54   ` Jeff King
2022-08-30 21:03     ` Johannes Schindelin
2022-08-30 19:09   ` Junio C Hamano
2022-08-30 13:54 ` [PATCH 3/3] t6132(NO_PERL): do not run the scripted `add -p` Johannes Schindelin via GitGitGadget
2022-08-30 14:19 ` validating signed/unsigned comparisons with Coccinelle, was Re: [PATCH 0/3] A couple of CI fixes regarding the built-in add --patch Johannes Schindelin
2022-08-30 15:22   ` Phillip Wood
2022-08-30 21:12     ` Johannes Schindelin
2022-08-30 21:29       ` Junio C Hamano
2022-08-30 21:46         ` Junio C Hamano
2022-08-30 21:32       ` Jeff King
2022-08-30 15:19 ` Phillip Wood

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=xmqqtu5tk0pi.fsf@gitster.g \
    --to=gitster@pobox.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=johannes.schindelin@gmx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.