1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-30 19:53:09 +00:00

Plug another hole for longjmp-ing from 'redisplay_window'

* src/fringe.c (update_window_fringes): Inhibit quitting, so as
not to longjmp out of redisplay_window.  (Bug#44448)
This commit is contained in:
Eli Zaretskii 2021-08-16 22:06:26 +03:00
parent b21c9b0816
commit 6898ae6f8c

View File

@ -969,6 +969,14 @@ update_window_fringes (struct window *w, bool keep_current_p)
if (w->pseudo_window_p) if (w->pseudo_window_p)
return 0; return 0;
ptrdiff_t count = SPECPDL_INDEX ();
/* This function could be called for redisplaying non-selected
windows, in which case point has been temporarily moved to that
window's window-point. So we cannot afford quitting out of here,
as point is restored after this function returns. */
specbind (Qinhibit_quit, Qt);
if (!MINI_WINDOW_P (w) if (!MINI_WINDOW_P (w)
&& (ind = BVAR (XBUFFER (w->contents), indicate_buffer_boundaries), !NILP (ind))) && (ind = BVAR (XBUFFER (w->contents), indicate_buffer_boundaries), !NILP (ind)))
{ {
@ -1331,6 +1339,8 @@ update_window_fringes (struct window *w, bool keep_current_p)
row->fringe_bitmap_periodic_p = periodic_p; row->fringe_bitmap_periodic_p = periodic_p;
} }
unbind_to (count, Qnil);
return redraw_p && !keep_current_p; return redraw_p && !keep_current_p;
} }