# HG changeset patch # User Richard M. Stallman # Date 734253042 0 # Node ID d5d7e6996604c1da45578beb3afc46b509afc630 # Parent c34bbe6501605a5ac05cb86db1cc28d2e8ea26bb (Fkill_all_local_variables): Store each var's current value in the buffer's alist entry, before reverting to the default value. diff -r c34bbe650160 -r d5d7e6996604 src/buffer.c --- a/src/buffer.c Thu Apr 08 07:10:13 1993 +0000 +++ b/src/buffer.c Thu Apr 08 07:10:42 1993 +0000 @@ -1149,8 +1149,16 @@ Set it up for the current buffer with the default value. */ tem = XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->cdr; + /* Store the symbol's current value into the alist entry + it is currently set up for. This is so that, if the + local is marked permanent, and we make it local again below, + we don't lose the value. */ + XCONS (XCONS (tem)->car)->cdr = XCONS (XSYMBOL (sym)->value)->car; + /* Switch to the symbol's default-value alist entry. */ XCONS (tem)->car = tem; + /* Mark it as current for the current buffer. */ XCONS (XCONS (XSYMBOL (sym)->value)->cdr)->car = Fcurrent_buffer (); + /* Store the current value into any forwarding in the symbol. */ store_symval_forwarding (sym, XCONS (XSYMBOL (sym)->value)->car, XCONS (tem)->cdr); }