]> git.eshelyaron.com Git - emacs.git/commitdiff
(display_echo_area): Temporarily inhibit garbage collection.
authorGerd Moellmann <gerd@gnu.org>
Wed, 8 Mar 2000 13:55:23 +0000 (13:55 +0000)
committerGerd Moellmann <gerd@gnu.org>
Wed, 8 Mar 2000 13:55:23 +0000 (13:55 +0000)
src/ChangeLog
src/xdisp.c

index fedfdc04b100393b1ad4d38d5fa9ea0f20df94bc..1db6f3d7626146d956ffc11b1adde3037300dee4 100644 (file)
@@ -1,5 +1,8 @@
 2000-03-08  Gerd Moellmann  <gerd@gnu.org>
 
+       * xdisp.c (display_echo_area): Temporarily inhibit garbage
+       collection.
+
        * xfns.c: Remove obsolete code in #if 0.
        (Fx_focus_frame): New function.
 
index 7ed073029ede39c6b8a47f6c814e28d27ac1213a..33a873278508262d02558e557924f21556061ff5 100644 (file)
@@ -5529,7 +5529,14 @@ static int
 display_echo_area (w)
      struct window *w;
 {
-  int i, no_message_p, window_height_changed_p;
+  int i, no_message_p, window_height_changed_p, count;
+
+  /* Temporarily disable garbage collections while displaying the echo
+     area.  This is done because a GC can print a message itself.
+     That message would modify the echo area buffer's contents while a
+     redisplay of the buffer is going on, and seriously confuse
+     redisplay.  */
+  count = inhibit_garbage_collection ();
 
   /* If there is no message, we must call display_echo_area_1
      nevertheless because it resizes the window.  But we will have to
@@ -5544,7 +5551,8 @@ display_echo_area (w)
 
   if (no_message_p)
     echo_area_buffer[i] = Qnil;
-  
+
+  unbind_to (count, Qnil);
   return window_height_changed_p;
 }