changeset 13593:e27c32c7d428

(Fmake_local_variable): Call find_symbol_value before making a new local binding.
author Richard M. Stallman <rms@gnu.org>
date Sun, 19 Nov 1995 03:39:22 +0000
parents 426a5dc91b98
children b7cb31d324cf
files src/data.c
diffstat 1 files changed, 7 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/src/data.c	Sun Nov 19 03:37:43 1995 +0000
+++ b/src/data.c	Sun Nov 19 03:39:22 1995 +0000
@@ -1284,6 +1284,11 @@
   tem = Fassq (sym, current_buffer->local_var_alist);
   if (NILP (tem))
     {
+      /* Swap out any local binding for some other buffer, and make
+	 sure the current value is permanently recorded, if it's the
+	 default value.  */
+      find_symbol_value (sym);
+
       current_buffer->local_var_alist
         = Fcons (Fcons (sym, XCONS (XCONS (XBUFFER_LOCAL_VALUE (XSYMBOL (sym)->value)->cdr)->cdr)->cdr),
 		 current_buffer->local_var_alist);
@@ -1292,7 +1297,9 @@
 	 force it to look once again for this buffer's value */
       {
 	Lisp_Object *pvalbuf;
+
 	valcontents = XSYMBOL (sym)->value;
+
 	pvalbuf = &XCONS (XBUFFER_LOCAL_VALUE (valcontents)->cdr)->car;
 	if (current_buffer == XBUFFER (*pvalbuf))
 	  *pvalbuf = Qnil;