Subject: bug#61215: 29.0.60; font-lock broken in diff-mode with long lines

From: Gregory Heytings <[email-masked]>
Date: Thu, 30 Mar 2023 23:22:20 +0000

>
> 0. emacs -Q
> 1. Set debug-on-error and backtrace-on-redisplay-error to t
> 2. Create a commit with some diff hunks in a prog mode at the beginning, and a single-line 1MB file added at the end;
> 3. From *vc-change-log* type `d' on that commit that opens *vc-diff* buffer
> 4. Scroll the *vc-diff* buffer
>
> It displays an error in the *Warning* buffer:
>
>  ⛔ Warning (error): Error in a redisplay Lisp hook.  See buffer *Redisplay_trace*
>

Sorry for the (very!) late reply.

I tried to reproduce that issue with Emacs 29 (at 59f66ea302).  I used the 
"a.xml" file from bug#61514, which can be recreated with the following 
short Python script:

#!/usr/bin/python3
f = open("a.xml", "w")
f.write('<id name="')
for n in range(1, 4096):
     f.write("n" * 1024)
f.write('">\n')

I did, in the Emacs repository:

echo README >> README
echo CONTRIBUTE >> CONTRIBUTE
echo INSTALL >> INSTALL
git add a.xml
git commit -a -m commit
./src/emacs -Q --eval '(setq debug-on-error t backtrace-on-redisplay-error t)'
C-x v l
d

At that point there are no errors, and the a.xml hunk is correctly 
fontified.  Now if I do:

q
d

then the errors you mention above appear (and the a.xml hunk is not 
correctly fontified anymore).  If I manually kill the *vc-diff* buffer, 
they disappear again.  Is this also what you see?