* dispnew.c (remake_frame_glyphs): When re-allocating the frame's
authorJim Blandy <jimb@redhat.com>
Sun, 14 Feb 1993 14:39:09 +0000 (14:39 +0000)
committerJim Blandy <jimb@redhat.com>
Sun, 14 Feb 1993 14:39:09 +0000 (14:39 +0000)
message buffer when echo_area_glyphs is pointing at it, relocate
echo_area_glyphs too.  Same for previous_echo_glyphs.
* window.h (previous_echo_glyphs): Add extern declaration for this.

src/dispnew.c
src/window.h

index 2d5259f..9ec88d9 100644 (file)
@@ -317,9 +317,20 @@ remake_frame_glyphs (frame)
     free_frame_glyphs (frame, FRAME_TEMP_GLYPHS (frame));
 
   if (FRAME_MESSAGE_BUF (frame))
-    FRAME_MESSAGE_BUF (frame)
-      = (char *) xrealloc (FRAME_MESSAGE_BUF (frame),
-                          FRAME_WIDTH (frame) + 1);
+    {
+      /* Reallocate the frame's message buffer; remember that
+        echo_area_glyphs may be pointing here.  */
+      char *old_message_buf = FRAME_MESSAGE_BUF (frame);
+
+      FRAME_MESSAGE_BUF (frame)
+       = (char *) xrealloc (FRAME_MESSAGE_BUF (frame),
+                            FRAME_WIDTH (frame) + 1);
+
+      if (echo_area_glyphs == old_message_buf)
+       echo_area_glyphs = FRAME_MESSAGE_BUF (frame);
+      if (previous_echo_glyphs == old_message_buf)
+       previous_echo_glyphs = FRAME_MESSAGE_BUF (frame);
+    }
   else
     FRAME_MESSAGE_BUF (frame)
       = (char *) xmalloc (FRAME_WIDTH (frame) + 1);
index 51a2715..000afe3 100644 (file)
@@ -225,6 +225,12 @@ extern int minibuf_prompt_width;
    minibuf_prompt as well as the buffer.  */
 extern char *echo_area_glyphs;
 
+/* Value of echo_area_glyphs when it was last acted on.
+  If this is nonzero, there is a message on the frame
+  in the minibuffer and it should be erased as soon
+  as it is no longer requested to appear. */
+extern char *previous_echo_glyphs;
+
 /* Depth in recursive edits.  */
 extern int command_loop_level;