Subject: Re: bug#11199: 24.0.95; killing right-to-left text at eob leads to inconsistent state

From: Eli Zaretskii <[email-masked]>
Date: Sun, 08 Apr 2012 23:37:22 +0300

> From: Michael Welsh Duggan <[email-masked]>
> Cc: [email-masked],  [email-masked]
> Date: Sun, 08 Apr 2012 16:25:46 -0400
> 
> >> (gdb) pgrowx last_unchanged_at_beg_row
> >> TEXT: 68 glyphs
> >>   0    0: CHAR[ ] pos=237 blev=0,btyp=L w=8 a+d=12+3 MB
> >> ...
> >>  66  528: CHAR[)] pos=303 blev=0,btyp=L w=8 a+d=12+3 MB
> >>  67  536: CHAR[ ] pos=0 blev=0,btyp=B w=8 a+d=12+3 MB
> >> (gdb) prowlims last_unchanged_at_beg_row
> >> edges=(237,305),r2l=0,cont=0,trunc=(0,0),at_zv=0
> >> (gdb) 
> >
> > And what does the following produce in this frame?
> >
> >   (gdb) p row->end
> 
> (gdb) p row->end
> $8 = {
>   pos = {
>     charpos = 309, 
>     bytepos = 313
>   }, 

That's the problem: the end position does not correspond to the actual
buffer positions of the characters in the glyph row (which are 237 to
303).  But how could that happen?..  And why doesn't it happen to me?
I cannot even make init_to_row_end be called when I type C-k.

Btw, if you set bidi-display-reordering nil in *scratch* before typing
the recipe, does the crash still happen?