SL Baur <steve(a)xemacs.org> writes:
> Ditto for me, with Linux and Mule and pgcc 1.0.3 and 1.1.
>
> If somebody can fix it in the very near future, the fix will go into
> 21.0, otherwise it won't.
Ah, that's an interesting challenge! I had been looking for a reason
to study redisplay anyway.
I'm pretty sure what causes the problems but have not figured out a
clean way to fix it, yet. I'll describe what I have found, maybe this
helps some (if not or this was totally obvious to the redisplay gurus
out there then just ignore this post):
In the following discussion I use Collin's original procedure:
- XEmacs -vanilla
- move to the apostrophe in don't (pos=36)
- C-Space M-> C-x nn
- answer the novice-warning with y
- C-x nw
- now the display is wrong (if you want the crash type C-l)
First of all the problem occurs in 20.4 as well, but doesn't produce a
crash (see below).
The real problem is redisplay's failure to display the buffer
correctly after widening (I mean the 'implicit' redisplay not the one
triggered by C-l).
After narrowing the startp marker/variable points to position 36
(which is right) but after widening it still points at 36 although
bufbegv now is 1. Now startp doesn't point at the right place (the
beginning of the first line) anymore and only the second half of the
line is displayed (probably the line start cache is also wrong at this
point).
XEmacs 20.4 doesn't crash because a more complete update of the frame
is forced (SET_FRAME_CLEAR;) at the beginning of Frecenter (which
Hrvoje removed for 21.0). This isn't done in the (Lisp-)recenter of
21.0.
I haven't bothered checking how the crash actually happens -- if we
can fix the first redisplay everything should be OK.
The right fix should in my opinion be done in widen_buffer (and maybe
plus some change in the redisplay code). Here we have to either adjust
the start-marker or make redisplay do that later on.
If I manually set the marker to 1 during the 'implicit' redisplay,
everything works...
Probably I'll look into this some more over the weekend, but if
somebody sees the light already, go ahead send a patch.
Have a nice weekend, everyone.
Gunnar
--
Gunnar Evermann
Natural Language Systems Group, University of Hamburg
EMail: Gunnar.Evermann(a)nats.informatik.uni-hamburg.de