From: Eli Zaretskii Date: Sun, 19 Sep 2021 18:39:18 +0000 (+0300) Subject: Avoid segfaults due to 'bug-reference-mode' X-Git-Tag: emacs-28.0.90~825 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=558ca61cbdba5315c058f70d1ba2232f1391739e;p=emacs.git Avoid segfaults due to 'bug-reference-mode' * src/xdisp.c (handle_fontified_prop): Set the frame's inhibit_clear_image_cache flag around calls to 'fontification-functions', to avoid Lisp triggering the clearing of image and/or face caches behind redisplay's back. (Big#50571) --- diff --git a/src/xdisp.c b/src/xdisp.c index 2e72f6b5915..b777d1b2825 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -4288,12 +4288,17 @@ handle_fontified_prop (struct it *it) struct buffer *obuf = current_buffer; ptrdiff_t begv = BEGV, zv = ZV; bool old_clip_changed = current_buffer->clip_changed; + bool saved_inhibit_flag = it->f->inhibit_clear_image_cache; val = Vfontification_functions; specbind (Qfontification_functions, Qnil); eassert (it->end_charpos == ZV); + /* Don't allow Lisp that runs from 'fontification-functions' + clear our face and image caches behind our back. */ + it->f->inhibit_clear_image_cache = true; + if (!CONSP (val) || EQ (XCAR (val), Qlambda)) safe_call1 (val, pos); else @@ -4327,6 +4332,7 @@ handle_fontified_prop (struct it *it) } } + it->f->inhibit_clear_image_cache = saved_inhibit_flag; unbind_to (count, Qnil); /* Fontification functions routinely call `save-restriction'.