From dca778d53aad12df44dbac8f99c288fa4f9f04b2 Mon Sep 17 00:00:00 2001
From: Martin Rudalics <rudalics@gmx.at>
Date: Mon, 15 Oct 2012 11:03:56 +0200
Subject: [PATCH] Fix Fwindow_end's handling of cached position (Bug#12600).

* window.c (Fwindow_end): Rewrite check whether cached position
can be used (Bug#12600).
(resize_frame_windows, grow_mini_window, shrink_mini_window):
Set windows_or_buffers_changed.
---
 src/ChangeLog | 7 +++++++
 src/window.c  | 8 +++++---
 2 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/src/ChangeLog b/src/ChangeLog
index e142cad7bf6..6acc22a1b27 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,10 @@
+2012-10-15  Martin Rudalics  <rudalics@gmx.at>
+
+	* window.c (Fwindow_end): Rewrite check whether cached position
+	can be used (Bug#12600).
+	(resize_frame_windows, grow_mini_window, shrink_mini_window):
+	Set windows_or_buffers_changed.
+
 2012-10-15  Daniel Colascione  <dancol@dancol.org>
 
 	* dbusbind.c: Fix cygw32 build break when compiling with dbus
diff --git a/src/window.c b/src/window.c
index 61d2a8b073f..b4fee61cac8 100644
--- a/src/window.c
+++ b/src/window.c
@@ -1464,9 +1464,7 @@ if it isn't already recorded.  */)
 #endif
 
   if (! NILP (update)
-      && ! (! NILP (w->window_end_valid)
-	    && w->last_modified >= BUF_MODIFF (b)
-	    && w->last_overlay_modified >= BUF_OVERLAY_MODIFF (b))
+      && (windows_or_buffers_changed || NILP (w->window_end_valid))
       && !noninteractive)
     {
       struct text_pos startp;
@@ -3795,6 +3793,8 @@ resize_frame_windows (struct frame *f, int size, int horflag)
 	    (m, make_number (XINT (r->top_line) + XINT (r->total_lines)));
 	}
     }
+
+  windows_or_buffers_changed++;
 }
 
 
@@ -4208,6 +4208,7 @@ grow_mini_window (struct window *w, int delta)
       w->last_modified = 0;
       w->last_overlay_modified = 0;
 
+      windows_or_buffers_changed++;
       adjust_glyphs (f);
       unblock_input ();
     }
@@ -4245,6 +4246,7 @@ shrink_mini_window (struct window *w)
 	  w->last_modified = 0;
 	  w->last_overlay_modified = 0;
 
+	  windows_or_buffers_changed++;
 	  adjust_glyphs (f);
 	  unblock_input ();
 	}
-- 
2.39.5