/* Display an echo area message in window W. Value is true if W's height is changed. If display_last_displayed_message_p, display the message that was last displayed, otherwise display the current message. */ static bool display_echo_area ( struct window * w ) { bool no_message_p , window_height_changed_p ; /* 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. */ ptrdiff_t 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 reset the echo_area_buffer in question to nil at the end because with_echo_area_buffer will sets it to an empty buffer. */ bool i = display_last_displayed_message_p ; no_message_p = NILP ( echo_area_buffer [ i ]); window_height_changed_p = with_echo_area_buffer ( w , display_last_displayed_message_p , display_echo_area_1 , ( intptr_t ) w , Qnil ); if ( no_message_p ) echo_area_buffer [ i ] = Qnil ; unbind_to ( count , Qnil ); return window_height_changed_p ; }

Source.