GNU bug report logs - #53343
29.0.50; assertion failure in diff--iterate-hunks

Previous Next

Package: emacs;

Reported by: Stephen Berman <stephen.berman <at> gmx.net>

Date: Tue, 18 Jan 2022 11:04:01 UTC

Severity: normal

Found in version 29.0.50

Fixed in version 29.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Stephen Berman <stephen.berman <at> gmx.net>
To: 53343 <at> debbugs.gnu.org
Subject: bug#53343: 29.0.50; assertion failure in diff--iterate-hunks
Date: Tue, 18 Jan 2022 13:20:18 +0100
On Tue, 18 Jan 2022 12:02:17 +0100 Stephen Berman <stephen.berman <at> gmx.net> wrote:

> Trying to view in Gnus an attached and buttonized diff in a certain
> article raises an assertion failure.  To reproduce:
>
> 0. emacs -Q
> 1. M-x gnus
> 2. Type `y' at prompt
> 3. Type `B RET news.gmane.io RET'
> 4. Type `C-s gmane.emacs.bugs RET RET'
> 5. Type `1 RET' at prompt
> 6. Type `j' and enter `<87fspm0z47.fsf <at> stranik.org> RET' at the prompt
> 7. Click on the Options menu and check "Enter Debugger on Error"
> 8. Type `2 b'
> =>
> Debugger entered--Lisp error: (cl-assertion-failed ((looking-at diff-hunk-header-re) nil))
[...]
> The assertion fails when point is at the beginning of the last line in
> the following excerpt from the diff (in buffer " *temp*")
>
>   *** /var/home/janstranik/src/emacs-27.2/lib-src/ebrowse.c~	2021-01-28 11:52:16.000000000 -0600
>   --- /var/home/janstranik/src/emacs-27.2/lib-src/ebrowse.c	2021-09-24 09:31:49.136287028 -0500
>   ***************
>   *** 1924,1931 ****
>
> This happens because diff-beginning-of-hunk calls re-search-forward on
> diff-hunk-header-re, which puts point at the end the line "*** 1924,1931
> ****" and then calls (forward-line 0), putting point at the beginning of
> that line.  But then (looking-at diff-hunk-header-re) returns nil,
> raising the assertion in diff--iterate-hunks.  Replacing (forward-line
> 0) in diff-beginning-of-hunk with (forward-line -1) makes the assertion
> succeed.
>
> I'm not sure if this is a bug or if the diff is malformed.  But evidence
> that the diff is not malformed is that if the diff in the article is
> saved to a file (by typing `2 K o' in the *Summary* buffer), then
> visiting that file in diff-mode with -Q does not raise an assertion
> failure.

On the other hand, I get the assertion failure with the above recipe in
emacs-28 and emacs-27, and it seems unlikely that such a bug in
diff-mode would have gone unnoticed till now, so maybe the diff is
malformed.  (Though if so, why does the failure not happen when visiting
the file containing the diff?)

Steve Berman




This bug report was last modified 3 years and 122 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.