]> git.eshelyaron.com Git - emacs.git/commitdiff
Avoid crashes due to bidi cache being reset during redisplay
authorEli Zaretskii <eliz@gnu.org>
Sun, 31 May 2020 14:23:11 +0000 (17:23 +0300)
committerEli Zaretskii <eliz@gnu.org>
Sun, 31 May 2020 14:23:11 +0000 (17:23 +0300)
If automatic character composition triggers GC, and
'garbage-collection-messages' are turned on, we could have the
bidi cache reset while processing RTL text, which would then
consistently crash.
* src/xdisp.c (display_echo_area_1): Protect the bidi cache
against changes inside 'try_window'.

src/xdisp.c

index bff6218106bd9637917c12ab36f955a699294251..60848f4433e37e094b17a91959497b8d87c6d868 100644 (file)
@@ -11539,7 +11539,9 @@ display_echo_area_1 (ptrdiff_t a1, Lisp_Object a2)
   /* Display.  */
   clear_glyph_matrix (w->desired_matrix);
   XSETWINDOW (window, w);
+  void *itdata = bidi_shelve_cache ();
   try_window (window, start, 0);
+  bidi_unshelve_cache (itdata, false);
 
   return window_height_changed_p;
 }