# HG changeset patch # User Richard M. Stallman # Date 767950946 0 # Node ID b5b5ca91f4636ae23cf59a6061eb11833ad65420 # Parent 373b9db3c71cf13fcac0c68f85517a930f0d6b3c (display_text_line): Since HPOS is negative, avoid writing before the beginning of the charstarts line. diff -r 373b9db3c71c -r b5b5ca91f463 src/xdisp.c --- 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 */