diff options
| author | Chong Yidong | 2012-02-12 17:46:33 +0800 |
|---|---|---|
| committer | Chong Yidong | 2012-02-12 17:46:33 +0800 |
| commit | afd83bd1529031d2883602908e9d58efef0c1fd0 (patch) | |
| tree | 72f9c5e52cca8212c34c6d3a141901ff5e4d5458 | |
| parent | d4bd55e7aed47124919d022852d48c53d389fe80 (diff) | |
| download | emacs-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/ChangeLog | 3 | ||||
| -rw-r--r-- | src/xdisp.c | 5 |
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 @@ | |||
| 1 | 2012-02-12 Chong Yidong <cyd@gnu.org> | 1 | 2012-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); |