1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-25 23:10:47 -08:00

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.
This commit is contained in:
Eli Zaretskii 2011-09-21 04:13:18 -04:00
parent b523dc2054
commit 3341db6299
3 changed files with 23 additions and 4 deletions

View file

@ -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

View file

@ -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;

View file

@ -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));
}
}