summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2011-09-21 04:13:18 -0400
committerEli Zaretskii <eliz@gnu.org>2011-09-21 04:13:18 -0400
commit3341db6299a2bb63a641210d72f73e93e2d1542e (patch)
tree0c10f907b173a58f0616c6413e11de9978224924 /src
parentb523dc2054c5b53080082122ed4f639b59632bad (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.
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog8
-rw-r--r--src/dispextern.h16
-rw-r--r--src/xdisp.c3
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));
}
}