diff options
| author | Eli Zaretskii | 2021-12-04 10:37:40 +0200 |
|---|---|---|
| committer | Eli Zaretskii | 2021-12-04 10:37:40 +0200 |
| commit | 3e7aff5fcdd3fa6e30497323c914f6c79c951ed6 (patch) | |
| tree | aadd25e064fb6435c8e6efa95cceb2a59f864770 /src | |
| parent | 142e827bc409ddb2692fcbd3d921db6ffdd651ac (diff) | |
| download | emacs-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.c | 11 |
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 | } |