--- Begin Message ---
Subject: |
28.0.50; Fwindow_text_pixel_size uses FETCH_CHAR (charpos) |
Date: |
Thu, 7 May 2020 11:55:07 +0000 |
Fwindow_text_pixel_size contains this code:
start = pos = BEGV;
while ((pos++ < ZV) && (c = FETCH_CHAR (pos))
&& (c == ' ' || c == '\t' || c == '\n' || c == '\r'))
start = pos;
while ((pos-- > BEGV) && (c = FETCH_CHAR (pos)) && (c == ' ' ||
c == '\t'))
start = pos;
which cannot possibly be correct: FETCH_CHAR takes a byte position,
not a character position, but BEGV and ZV are measured in characters.
(I'm familiarizing myself with the xdisp.c code, partly by replacing
bytepos/charpos pairs of variables with a combined pos_t type
variable. I think that's a good idea partly because it would prevent
precisely this kind of bug.)
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#41125: 28.0.50; Fwindow_text_pixel_size uses FETCH_CHAR (charpos) |
Date: |
Fri, 08 May 2020 13:37:42 +0300 |
> Cc: address@hidden
> From: martin rudalics <address@hidden>
> Date: Fri, 8 May 2020 09:18:27 +0200
>
> >> which cannot possibly be correct: FETCH_CHAR takes a byte position,
> >> not a character position, but BEGV and ZV are measured in characters.
> >
> > Ouch! Thanks. Does the patch below look good?
>
> It does. Thanks for fixing yet another of my blunders in this function.
> And thanks to Pip for catching it.
Thanks, I pushed the fix to the emacs-27 branch.
--- End Message ---