1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-01-27 07:30:59 -08:00

(Fbuffer_local_value): Store current value into its binding

so we get the up-to-date value for the binding that is loaded.
This commit is contained in:
Richard M. Stallman 2002-07-07 10:17:26 +00:00
parent 0654d6e3fc
commit f0bac7deee

View file

@ -854,7 +854,26 @@ is the default binding of variable. */)
result = Fdefault_value (symbol);
}
else
result = XCDR (result);
{
Lisp_Object valcontents;
Lisp_Object current_alist_element;
/* What binding is loaded right now? */
valcontents = SYMBOL_VALUE (symbol);
current_alist_element
= XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr);
/* The value of the currently loaded binding is not
stored in it, but rather in the realvalue slot.
Store that value into the binding it belongs to
in case that is the one we are about to use. */
Fsetcdr (current_alist_element,
do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue));
/* Now get the (perhaps updated) value out of the binding. */
result = XCDR (result);
}
if (EQ (result, Qunbound))
return Fsignal (Qvoid_variable, Fcons (symbol, Qnil));