summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAaron Jensen <aaronjensen@gmail.com>2021-01-09 20:43:32 -0600
committerEli Zaretskii <eliz@gnu.org>2021-01-15 14:04:25 +0200
commit4dc72dd9deb1c3394ada3de3f52bc7c1ff831ab6 (patch)
tree2f6adb25275363194fc4fe35d565c8396c168586 /src
parent66ac17289a5d04366a6b05eb5a105dff408b16b8 (diff)
downloademacs-4dc72dd9deb1c3394ada3de3f52bc7c1ff831ab6.tar.gz
Fix 'window-text-pixel-size' when there are leading/trailing spaces
First, scan to find the first non-whitespace character and then backtrack to find the beginning of the line. The previous algorithm always started on the non-whitespace character during the backtrack, causing it to stop immediately and not actually find the beginning of the line. The same applies to the end of line calculation. * src/xdisp.c: (Fwindow_text_pixel_size): Fix off by one error. (Bug#45748) * test/src/xdisp-tests.el (xdisp-tests--window-text-pixel-size) (xdisp-tests--window-text-pixel-size-leading-space) (xdisp-tests--window-text-pixel-size-trailing-space): New tests.
Diffstat (limited to 'src')
-rw-r--r--src/xdisp.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 64f401690a6..ea67329cff1 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -10649,9 +10649,10 @@ include the height of both, if present, in the return value. */)
bpos = BEGV_BYTE;
while (bpos < ZV_BYTE)
{
- c = fetch_char_advance (&start, &bpos);
+ c = FETCH_BYTE (bpos);
if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
break;
+ inc_both (&start, &bpos);
}
while (bpos > BEGV_BYTE)
{
@@ -10680,7 +10681,10 @@ include the height of both, if present, in the return value. */)
dec_both (&end, &bpos);
c = FETCH_BYTE (bpos);
if (!(c == ' ' || c == '\t' || c == '\n' || c == '\r'))
- break;
+ {
+ inc_both (&end, &bpos);
+ break;
+ }
}
while (bpos < ZV_BYTE)
{