aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorEli Zaretskii2021-12-04 10:37:40 +0200
committerEli Zaretskii2021-12-04 10:37:40 +0200
commit3e7aff5fcdd3fa6e30497323c914f6c79c951ed6 (patch)
treeaadd25e064fb6435c8e6efa95cceb2a59f864770 /src
parent142e827bc409ddb2692fcbd3d921db6ffdd651ac (diff)
downloademacs-3e7aff5fcdd3fa6e30497323c914f6c79c951ed6.tar.gz
emacs-3e7aff5fcdd3fa6e30497323c914f6c79c951ed6.zip
Yet another place inside redisplay_window to prevent quitting
* src/xdisp.c (handle_single_display_spec): Inhibit quitting around the call to 'lookup_derived_face' (which can QUIT). (Bug#44448)
Diffstat (limited to 'src')
-rw-r--r--src/xdisp.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/xdisp.c b/src/xdisp.c
index 9f93799783d..7ca3977200a 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -5822,8 +5822,15 @@ handle_single_display_spec (struct it *it, Lisp_Object spec, Lisp_Object object,
5822 if (CONSP (XCDR (XCDR (spec)))) 5822 if (CONSP (XCDR (XCDR (spec))))
5823 { 5823 {
5824 Lisp_Object face_name = XCAR (XCDR (XCDR (spec))); 5824 Lisp_Object face_name = XCAR (XCDR (XCDR (spec)));
5825 int face_id2 = lookup_derived_face (it->w, it->f, face_name, 5825 int face_id2;
5826 FRINGE_FACE_ID, false); 5826 /* Don't allow quitting from lookup_derived_face, for when
5827 we are displaying a non-selected window, and the buffer's
5828 point was temporarily moved to the window-point. */
5829 ptrdiff_t count1 = SPECPDL_INDEX ();
5830 specbind (Qinhibit_quit, Qt);
5831 face_id2 = lookup_derived_face (it->w, it->f, face_name,
5832 FRINGE_FACE_ID, false);
5833 unbind_to (count1, Qnil);
5827 if (face_id2 >= 0) 5834 if (face_id2 >= 0)
5828 face_id = face_id2; 5835 face_id = face_id2;
5829 } 5836 }