Mercurial > emacs
changeset 7292:b5b5ca91f463
(display_text_line): Since HPOS is negative, avoid
writing before the beginning of the charstarts line.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 03 May 1994 07:42:26 +0000 |
parents | 373b9db3c71c |
children | 0b9e737663c2 |
files | src/xdisp.c |
diffstat | 1 files changed, 8 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/xdisp.c Tue May 03 06:05:48 1994 +0000 +++ b/src/xdisp.c Tue May 03 07:42:26 1994 +0000 @@ -2051,7 +2051,7 @@ p1start = p1; charstart = desired_glyphs->charstarts[vpos] + hpos; /* In case we don't ever write anything into it... */ - *charstart = -1; + desired_glyphs->charstarts[vpos][XFASTINT (w->left)] = -1; end = ZV; leftmargin = desired_glyphs->glyphs[vpos] + XFASTINT (w->left); endp = leftmargin + width; @@ -2280,12 +2280,12 @@ And don't clobber anything to the left of that. */ if (p1prev < leftmargin) { - charstart[0] = pos; - p2x = charstart; + p2x = charstart + (leftmargin - p1start); + *p2x = pos; } /* This loop skips over the char p2x initially points to. */ - while (++p2x != p2) + while (++p2x < p2) *p2x = -1; } } @@ -2307,7 +2307,10 @@ /* Add 1 in the endtest to compensate for the fact that ENDP was made from WIDTH, which is 1 less than the window's actual internal width. */ - for (i = p1 - p1start + 1; i < endp - p1start + 1; i++) + i = p1 - p1start + 1; + if (p1 < leftmargin) + i += leftmargin - p1; + for (; i < endp - p1start + 1; i++) charstart[i] = 0; /* Handle continuation in middle of a character */