mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-04-21 05:21:37 -07:00
(IT_set_face): Abort if the default face is not realized
and cached. (IT_write_glyphs): Reset the screen face to the default face before writing glyphs.
This commit is contained in:
parent
1697ca3831
commit
e30aee93e2
1 changed files with 14 additions and 1 deletions
15
src/msdos.c
15
src/msdos.c
|
|
@ -670,7 +670,13 @@ IT_set_face (int face)
|
|||
unsigned long fg, bg;
|
||||
|
||||
if (!fp)
|
||||
fp = FACE_FROM_ID (selected_frame, DEFAULT_FACE_ID);
|
||||
{
|
||||
fp = FACE_FROM_ID (selected_frame, DEFAULT_FACE_ID);
|
||||
/* The default face for the frame should always be realized and
|
||||
cached. */
|
||||
if (!fp)
|
||||
abort ();
|
||||
}
|
||||
screen_face = face;
|
||||
fg = fp->foreground;
|
||||
bg = fp->background;
|
||||
|
|
@ -729,6 +735,13 @@ IT_write_glyphs (struct glyph *str, int str_len)
|
|||
|
||||
screen_buf = screen_bp = alloca (str_len * 2);
|
||||
screen_buf_end = screen_buf + str_len * 2;
|
||||
|
||||
/* Since faces get cached and uncached behind our back, we can't
|
||||
rely on their indices in the cache being consistent across
|
||||
invocations. So always reset the screen face to the default
|
||||
face of the frame, before writing glyphs, and let the glyphs
|
||||
set the right face if it's different from the default. */
|
||||
IT_set_face (DEFAULT_FACE_ID);
|
||||
|
||||
/* The mode bit CODING_MODE_LAST_BLOCK should be set to 1 only at
|
||||
the tail. */
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue