changeset 27371:77048c4b6fb0

(set_internal): Fix the criteria for whether to swap out the old cached binding.
author Richard M. Stallman <rms@gnu.org>
date Thu, 20 Jan 2000 06:01:48 +0000
parents 70846ee19545
children 79d08dbee5fd
files src/data.c
diffstat 1 files changed, 8 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/data.c	Wed Jan 19 19:54:36 2000 +0000
+++ b/src/data.c	Thu Jan 20 06:01:48 2000 +0000
@@ -1043,11 +1043,14 @@
 	 currently cached, or if it's a Lisp_Buffer_Local_Value and
 	 we're looking at the default value, the cache is invalid; we
 	 need to write it out, and find the new CURRENT-ALIST-ELEMENT.  */
-      if (buf != XBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer)
-	  || !EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame)
-	  || (BUFFER_LOCAL_VALUEP (valcontents)
-	      && EQ (XCAR (current_alist_element),
-		     current_alist_element)))
+      if ((XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer
+	   && (buf != XBUFFER (XBUFFER_LOCAL_VALUE (valcontents)->buffer)
+	       || (BUFFER_LOCAL_VALUEP (valcontents)
+		   && EQ (XCAR (current_alist_element),
+			  current_alist_element))))
+	  ||
+	  (XBUFFER_LOCAL_VALUE (valcontents)->found_for_frame
+	   && !EQ (selected_frame, XBUFFER_LOCAL_VALUE (valcontents)->frame)))
 	{
 	  /* Write out the cached value for the old buffer; copy it
 	     back to its alist element.  This works if the current