]> code.delx.au - gnu-emacs/commitdiff
(set_internal): Fix the criteria for whether
authorRichard M. Stallman <rms@gnu.org>
Thu, 20 Jan 2000 06:02:13 +0000 (06:02 +0000)
committerRichard M. Stallman <rms@gnu.org>
Thu, 20 Jan 2000 06:02:13 +0000 (06:02 +0000)
to swap out the old cached binding.

src/ChangeLog
src/data.c

index 3edfe5a6d728ccc95c2285b33686c4fcc17a1e2b..2a14d959212e37533149c1919b9069e4b51198e9 100644 (file)
@@ -1,3 +1,8 @@
+2000-01-20  Richard M. Stallman  <rms@caffeine.ai.mit.edu>
+
+       * data.c (set_internal): Fix the criteria for whether
+       to swap out the old cached binding.
+
 2000-01-19  Dave Love  <fx@gnu.org>
 
        * lread.c: (syms_of_lread) [user-init-file]: Doc change.
index f4ee843a1a26805149379fe5891914b7c6379e58..3f5fec2349bd91d663f4449c75a1310b63b936ec 100644 (file)
@@ -1043,11 +1043,14 @@ set_internal (symbol, newval, buf, bindflag)
         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