Commit c9390423 authored by Eli Zaretskii's avatar Eli Zaretskii

Avoid crashes with remapped default face in Org mode

* src/xfaces.c (face_at_buffer_position): Look up BASE_FACE_ID
anew if it is not in the frame's face cache.  This avoids
crashes when Org mode sets up for a new major mode in embedded
code fragment, and the default face is remapped.  (Bug#33222)
parent 97660fa9
...@@ -5943,7 +5943,14 @@ face_at_buffer_position (struct window *w, ptrdiff_t pos, ...@@ -5943,7 +5943,14 @@ face_at_buffer_position (struct window *w, ptrdiff_t pos,
int face_id; int face_id;
if (base_face_id >= 0) if (base_face_id >= 0)
face_id = base_face_id; {
face_id = base_face_id;
/* Make sure the base face ID is usable: if someone freed the
cached faces since we've looked up the base face, we need
to look it up again. */
if (!FACE_FROM_ID_OR_NULL (f, face_id))
face_id = lookup_basic_face (f, DEFAULT_FACE_ID);
}
else if (NILP (Vface_remapping_alist)) else if (NILP (Vface_remapping_alist))
face_id = DEFAULT_FACE_ID; face_id = DEFAULT_FACE_ID;
else else
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment