emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 3e7aff5: Yet another place inside redisplay_window to prevent qui


From: Eli Zaretskii
Subject: master 3e7aff5: Yet another place inside redisplay_window to prevent quitting
Date: Sat, 4 Dec 2021 03:38:31 -0500 (EST)

branch: master
commit 3e7aff5fcdd3fa6e30497323c914f6c79c951ed6
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>

    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)
---
 src/xdisp.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/src/xdisp.c b/src/xdisp.c
index 9f93799..7ca3977 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,
          if (CONSP (XCDR (XCDR (spec))))
            {
              Lisp_Object face_name = XCAR (XCDR (XCDR (spec)));
-             int face_id2 = lookup_derived_face (it->w, it->f, face_name,
-                                                 FRINGE_FACE_ID, false);
+             int face_id2;
+             /* Don't allow quitting from lookup_derived_face, for when
+                we are displaying a non-selected window, and the buffer's
+                point was temporarily moved to the window-point.  */
+             ptrdiff_t count1 = SPECPDL_INDEX ();
+             specbind (Qinhibit_quit, Qt);
+             face_id2 = lookup_derived_face (it->w, it->f, face_name,
+                                             FRINGE_FACE_ID, false);
+             unbind_to (count1, Qnil);
              if (face_id2 >= 0)
                face_id = face_id2;
            }



reply via email to

[Prev in Thread] Current Thread [Next in Thread]