# HG changeset patch # User Jim Blandy # Date 729700749 0 # Node ID ad692b76edf45a59962e7fe2f81f9537a2b325b3 # Parent 00bee181f7ed27ab75d809c5238c96f5a98681bf * dispnew.c (remake_frame_glyphs): When re-allocating the frame's 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. diff -r 00bee181f7ed -r ad692b76edf4 src/dispnew.c --- a/src/dispnew.c Sun Feb 14 14:38:43 1993 +0000 +++ b/src/dispnew.c Sun Feb 14 14:39:09 1993 +0000 @@ -317,9 +317,20 @@ 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); diff -r 00bee181f7ed -r ad692b76edf4 src/window.h --- a/src/window.h Sun Feb 14 14:38:43 1993 +0000 +++ b/src/window.h Sun Feb 14 14:39:09 1993 +0000 @@ -225,6 +225,12 @@ 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;