summaryrefslogtreecommitdiff
path: root/src/xfaces.c
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2021-11-15 15:35:31 +0200
committerEli Zaretskii <eliz@gnu.org>2021-11-15 15:35:31 +0200
commit5044151486cfd88edceb841d2bf8378dcc906e34 (patch)
tree54427fe66c15f7e94640f23ae36eb4a886fe6e5b /src/xfaces.c
parent199e2468d3053d9cb81b5654664d88d4c8cec3ad (diff)
downloademacs-5044151486cfd88edceb841d2bf8378dcc906e34.tar.gz
Avoid segfaults due to freed face cache
* src/xfaces.c (face_at_buffer_position): Make sure DEFAULT_FACE is usable. (Bug#51864)
Diffstat (limited to 'src/xfaces.c')
-rw-r--r--src/xfaces.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/xfaces.c b/src/xfaces.c
index 5e63e87d751..18e65d07e20 100644
--- a/src/xfaces.c
+++ b/src/xfaces.c
@@ -6423,7 +6423,10 @@ face_at_buffer_position (struct window *w, ptrdiff_t pos,
else
face_id = lookup_basic_face (w, f, DEFAULT_FACE_ID);
- default_face = FACE_FROM_ID (f, face_id);
+ default_face = FACE_FROM_ID_OR_NULL (f, face_id);
+ if (!default_face)
+ default_face = FACE_FROM_ID (f,
+ lookup_basic_face (w, f, DEFAULT_FACE_ID));
}
/* Optimize common cases where we can use the default face. */