From fcc1fe85416f7dda9a1b83faf88a55c170a41ac9 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Thu, 11 Apr 2013 19:06:47 +0300 Subject: [PATCH] Fix bug #14170 with window-end returning a stale value. This bug was introduced in 2012-10-15T09:03:56Z!rudalics@gmx.at while solving bug #12600. src/window.c (Fwindow_end): Test more flags, including the buffer's last_overlay_modified flag, to determine whether the window's display is really up-to-date. Prevents the function from returning a stale value. (Fwindow_line_height): Fix the test for up-to-date-ness of the current matrix. --- src/ChangeLog | 9 +++++++++ src/window.c | 12 +++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index ff6b9508d62..7f4c59b8eb4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2013-04-11 Eli Zaretskii + + * window.c (Fwindow_end): Test more flags, including the buffer's + last_overlay_modified flag, to determine whether the window's + display is really up-to-date. Prevents the function from + returning a stale value. (Bug#14170) + (Fwindow_line_height): Fix the test for up-to-date-ness of the + current matrix. + 2013-04-10 Eli Zaretskii * frame.c (do_switch_frame): Mark the TTY frame we switch to as diff --git a/src/window.c b/src/window.c index 2ddf742be99..fe5b5ec1e6e 100644 --- a/src/window.c +++ b/src/window.c @@ -1493,7 +1493,12 @@ if it isn't already recorded. */) b = XBUFFER (buf); if (! NILP (update) - && (windows_or_buffers_changed || !w->window_end_valid) + && (windows_or_buffers_changed + || !w->window_end_valid + || b->clip_changed + || b->prevent_redisplay_optimizations_p + || w->last_modified < BUF_MODIFF (b) + || w->last_overlay_modified < BUF_OVERLAY_MODIFF (b)) && !noninteractive) { struct text_pos startp; @@ -1702,8 +1707,9 @@ Return nil if window display is not up-to-date. In that case, use /* Fail if current matrix is not up-to-date. */ if (!w->window_end_valid - || current_buffer->clip_changed - || current_buffer->prevent_redisplay_optimizations_p + || windows_or_buffers_changed + || b->clip_changed + || b->prevent_redisplay_optimizations_p || w->last_modified < BUF_MODIFF (b) || w->last_overlay_modified < BUF_OVERLAY_MODIFF (b)) return Qnil; -- 2.39.2