emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Display problems with 'before-string in overlay


From: Kim F. Storm
Subject: Re: Display problems with 'before-string in overlay
Date: Thu, 12 Apr 2007 10:19:57 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.97 (gnu/linux)

"Lennart Borgman (gmail)" <address@hidden> writes:

> Looking at the logic it seems like it perhaps should be like below 
> instead? This at least works in my case. The current test just seems 
> useless. Or perhaps I am just very bad at reading C code?

The "useless" code you refer to was installed to fix a bug, and it
did fix _that_ bug.

Now you have found a different bug in the same code, and you propose
a different way to fix _your_ bug.  

Indeed your code does look like it could fix the problem - but it
definitely changes the semantics of the test, so there may very well
be other corner casee which are broken by _your_ code.

Can you track down the bug report(s) which lead up to the fix I
installed, so you can confirm that your change also fixes the old bug(s).
I must be close to the date in the ChangeLog.

Besides, the ++row seems dangrous to me.  Would row+1 do the same?

>
>
> Index: xdisp.c
> ===================================================================
> RCS file: /cvsroot/emacs/emacs/src/xdisp.c,v
> retrieving revision 1.1146
> diff -c -r1.1146 xdisp.c
> *** xdisp.c   10 Apr 2007 15:57:25 -0000      1.1146
> --- xdisp.c   12 Apr 2007 00:40:36 -0000
> ***************
> *** 15859,15865 ****
>        If the row is continued it doesn't end in a newline.  */
>          if (CHARPOS (row->end.string_pos) >= 0)
>       cursor_row_p = (row->continued_p
> !                     || PT >= MATRIX_ROW_START_CHARPOS (row));
>          else if (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (row))
>       {
>         /* If the row ends in middle of a real character,
> --- 15859,15865 ----
>        If the row is continued it doesn't end in a newline.  */
>          if (CHARPOS (row->end.string_pos) >= 0)
>       cursor_row_p = (row->continued_p
> !                     || PT < MATRIX_ROW_START_CHARPOS (++row));
>          else if (MATRIX_ROW_ENDS_IN_MIDDLE_OF_CHAR_P (row))
>       {
>         /* If the row ends in middle of a real character,

-- 
Kim F. Storm <address@hidden> http://www.cua.dk





reply via email to

[Prev in Thread] Current Thread [Next in Thread]