diff options
author | Eli Zaretskii <eliz@gnu.org> | 2011-09-21 04:13:18 -0400 |
---|---|---|
committer | Eli Zaretskii <eliz@gnu.org> | 2011-09-21 04:13:18 -0400 |
commit | 3341db6299a2bb63a641210d72f73e93e2d1542e (patch) | |
tree | 0c10f907b173a58f0616c6413e11de9978224924 | |
parent | b523dc2054c5b53080082122ed4f639b59632bad (diff) |
Fix assertion failure when displaying stretch glyphs under linum-mode.
src/xdisp.c (pop_it): Allow it->object that is a cons cell to pass
the xassert test.
src/dispextern.h (struct it): Update the comment documenting what
can it->OBJECT be.
-rw-r--r-- | src/ChangeLog | 8 | ||||
-rw-r--r-- | src/dispextern.h | 16 | ||||
-rw-r--r-- | src/xdisp.c | 3 |
3 files changed, 23 insertions, 4 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index 17b53216e8..dff41f1dbb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2011-09-21 Eli Zaretskii <eliz@gnu.org> + + * xdisp.c (pop_it): Allow it->object that is a cons cell to pass + the xassert test. + + * dispextern.h (struct it): Update the comment documenting what + can it->OBJECT be. + 2011-09-20 Eli Zaretskii <eliz@gnu.org> * xdisp.c (set_cursor_from_row): If the row ends in a newline from diff --git a/src/dispextern.h b/src/dispextern.h index 6528412158..3c157371ef 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -2398,9 +2398,19 @@ struct it Lisp_Object font_height; /* Object and position where the current display element came from. - Object can be a Lisp string in case the current display element - comes from an overlay string, or it is buffer. It may also be nil - during mode-line update. Position is a position in object. */ + Object is normally the buffer which is being rendered, but it can + also be a Lisp string in case the current display element comes + from an overlay string or from a display string (before- or + after-string). It may also be nil when a C string is being + rendered, e.g., during mode-line or header-line update. It can + also be a cons cell of the form `(space ...)', when we produce a + stretch glyph from a `display' specification. Finally, it can be + a zero-valued Lisp integer, but only temporarily, when we are + producing special glyphs for display purposes, like truncation + and continuation glyphs, or blanks that extend each line to the + edge of the window on a TTY. + + Position is the current iterator position in object. */ Lisp_Object object; struct text_pos position; diff --git a/src/xdisp.c b/src/xdisp.c index 3505d18d50..0d870671c6 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -5459,7 +5459,8 @@ pop_it (struct it *it) && IT_BYTEPOS (*it) == it->bidi_it.bytepos) || (STRINGP (it->object) && IT_STRING_CHARPOS (*it) == it->bidi_it.charpos - && IT_STRING_BYTEPOS (*it) == it->bidi_it.bytepos)); + && IT_STRING_BYTEPOS (*it) == it->bidi_it.bytepos) + || (CONSP (it->object) && it->method == GET_FROM_STRETCH)); } } |