Mercurial > emacs
diff src/xdisp.c @ 107599:23f8a579b56e
Retrospective commit from 2009-10-24.
Continue working on set_cursor_from_row.
Cleanup of resolved_level and bidi_type members of struct glyph.
xdisp.c (set_cursor_from_row): Fix off-by-one error when
skipping over non-character glyphs at end of a reversed row.
dispextern.h (struct glyph): The `resolved_level' member needs
only 5 bits, not 6. The `bidi_type' member needs only 3 bits.
(bidi_type_t): Rearrange so that types that can appear in the
resolved type are at the beginning and have values less than 8.
bidi.c: Include setjmp.h.
author | Eli Zaretskii <eliz@gnu.org> |
---|---|
date | Fri, 01 Jan 2010 06:45:36 -0500 |
parents | 4bad2c6338cc |
children | e47593843838 |
line wrap: on
line diff
--- a/src/xdisp.c Fri Jan 01 06:39:56 2010 -0500 +++ b/src/xdisp.c Fri Jan 01 06:45:36 2010 -0500 @@ -12520,8 +12520,8 @@ x += g->pixel_width; cursor_x = x; while (end < glyph - && INTEGERP (end->object) - && end->charpos <= 0) + && INTEGERP ((end + 1)->object) + && (end + 1)->charpos <= 0) ++end; glyph_before = glyph + 1; glyph_after = end; @@ -20926,6 +20926,8 @@ if (it->bidi_p) { glyph->resolved_level = it->bidi_it.resolved_level; + if ((it->bidi_it.type & 7) != it->bidi_it.type) + abort (); glyph->bidi_type = it->bidi_it.type; } ++it->glyph_row->used[area]; @@ -20983,6 +20985,8 @@ if (it->bidi_p) { glyph->resolved_level = it->bidi_it.resolved_level; + if ((it->bidi_it.type & 7) != it->bidi_it.type) + abort (); glyph->bidi_type = it->bidi_it.type; } ++it->glyph_row->used[area]; @@ -21162,6 +21166,8 @@ if (it->bidi_p) { glyph->resolved_level = it->bidi_it.resolved_level; + if ((it->bidi_it.type & 7) != it->bidi_it.type) + abort (); glyph->bidi_type = it->bidi_it.type; } ++it->glyph_row->used[area]; @@ -21213,6 +21219,8 @@ if (it->bidi_p) { glyph->resolved_level = it->bidi_it.resolved_level; + if ((it->bidi_it.type & 7) != it->bidi_it.type) + abort (); glyph->bidi_type = it->bidi_it.type; } ++it->glyph_row->used[area];