]> code.delx.au - gnu-emacs/commitdiff
Fix rare problems with echo-area display and multiple frames
authorEli Zaretskii <eliz@gnu.org>
Tue, 29 Mar 2016 17:38:54 +0000 (20:38 +0300)
committerEli Zaretskii <eliz@gnu.org>
Tue, 29 Mar 2016 17:38:54 +0000 (20:38 +0300)
* src/xdisp.c (redisplay_window): Bind inhibit-redisplay non-nil
around the call to x_consider_frame_title, to prevent
resize_mini_window from undoing echo-area display.  (Bug#23124)

src/xdisp.c

index d701306b22cb7fe6f8209e3a7ff37c1c55406e69..5be94f0cd07dab4953a426934765809639ed9300 100644 (file)
@@ -17082,7 +17082,16 @@ redisplay_window (Lisp_Object window, bool just_this_one_p)
            ignore_mouse_drag_p = true;
 #endif
         }
+      ptrdiff_t count1 = SPECPDL_INDEX ();
+      /* x_consider_frame_title calls select-frame, which calls
+        resize_mini_window, which could resize the mini-window and by
+        that undo the effect of this redisplay cycle wrt minibuffer
+        and echo-area display.  Binding inhibit-redisplay to t makes
+        the call to resize_mini_window a no-op, thus avoiding the
+        adverse side effects.  */
+      specbind (Qinhibit_redisplay, Qt);
       x_consider_frame_title (w->frame);
+      unbind_to (count1, Qnil);
 #endif
     }