Re: [PATCH 03/10] diff.c: drop tautologous condition in emit_line_0
- From
Junio C Hamano <gitster@pobox.com>
- Date
- Sep 12, 2016, 23:53 UTC
- Message-ID
- <xmqq1t0oy8t8.fsf@gitster.mtv.corp.google.com>
- In-Reply-To
- <1473572530-25764-4-git-send-email-stefanbeller@gmail.com>
Stefan Beller <stefanbeller@gmail.com> writes:
Show 14 quoted lines
> diff --git a/diff.c b/diff.c
> index 156c2aa..9d2e704 100644
> --- a/diff.c
> +++ b/diff.c
> @@ -460,8 +460,7 @@ static void emit_line_0(struct diff_options *o, const char *set, const char *res
>
> if (len == 0) {
> has_trailing_newline = (first == '\n');
> - has_trailing_carriage_return = (!has_trailing_newline &&
> - (first == '\r'));
> + has_trailing_carriage_return = (first == '\r');
> nofirst = has_trailing_newline || has_trailing_carriage_return;
> } else {
> has_trailing_newline = (len > 0 && line[len-1] == '\n');Interesting.
This may be a mis-conversion at 250f7993 ("diff.c: split emit_line() from the first char and the rest of the line", 2009-09-14), I suspect. The original took line[] with length and peeked for '\n', and when it saw one, it decremented length before checking line[len-1] for '\r'.
But of course if there is only one byte on the line (i.e. len == 0 after first is stripped off), it cannot be both '\n' or '\r' at the same time.
Thanks for spotting.