From: Eli Zaretskii Date: Fri, 2 Nov 2018 10:07:47 +0000 (+0200) Subject: Avoid crashes with remapped default face in Org mode X-Git-Tag: emacs-26.1.90~36 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=c9390423d609969193de1ea3228e259e22451719;p=emacs.git 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) --- diff --git a/src/xfaces.c b/src/xfaces.c index f1fc6bb632f..98a46dcb872 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -5943,7 +5943,14 @@ face_at_buffer_position (struct window *w, ptrdiff_t pos, int face_id; 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)) face_id = DEFAULT_FACE_ID; else