aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChong Yidong2012-02-12 17:46:33 +0800
committerChong Yidong2012-02-12 17:46:33 +0800
commitafd83bd1529031d2883602908e9d58efef0c1fd0 (patch)
tree72f9c5e52cca8212c34c6d3a141901ff5e4d5458
parentd4bd55e7aed47124919d022852d48c53d389fe80 (diff)
downloademacs-afd83bd1529031d2883602908e9d58efef0c1fd0.tar.gz
emacs-afd83bd1529031d2883602908e9d58efef0c1fd0.zip
Avoid a risky corner case with invalid face ids.
* src/xdisp.c (handle_stop): Avoid assigning -1 to it->face_id here, as that creates a dangerous corner case.
-rw-r--r--src/ChangeLog3
-rw-r--r--src/xdisp.c5
2 files changed, 7 insertions, 1 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index 0ded1fc7a67..1e28d258523 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,5 +1,8 @@
12012-02-12 Chong Yidong <cyd@gnu.org> 12012-02-12 Chong Yidong <cyd@gnu.org>
2 2
3 * xdisp.c (handle_stop): Avoid assigning -1 to it->face_id here,
4 as that creates a dangerous corner case.
5
3 * window.c (Fdelete_window_internal): Invalidate the mouse 6 * window.c (Fdelete_window_internal): Invalidate the mouse
4 highlight (Bug#9904). 7 highlight (Bug#9904).
5 8
diff --git a/src/xdisp.c b/src/xdisp.c
index 75ea519e82e..70c12497e20 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -2750,9 +2750,12 @@ init_iterator (struct it *it, struct window *w,
2750 if (charpos >= BUF_BEG (current_buffer)) 2750 if (charpos >= BUF_BEG (current_buffer))
2751 { 2751 {
2752 it->end_charpos = ZV; 2752 it->end_charpos = ZV;
2753 it->face_id = -1;
2754 IT_CHARPOS (*it) = charpos; 2753 IT_CHARPOS (*it) = charpos;
2755 2754
2755 /* We will rely on `reseat' to set this up properly, via
2756 handle_face_prop. */
2757 it->face_id = it->base_face_id;
2758
2756 /* Compute byte position if not specified. */ 2759 /* Compute byte position if not specified. */
2757 if (bytepos < charpos) 2760 if (bytepos < charpos)
2758 IT_BYTEPOS (*it) = CHAR_TO_BYTE (charpos); 2761 IT_BYTEPOS (*it) = CHAR_TO_BYTE (charpos);