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:
parent
0654d6e3fc
commit
f0bac7deee
1 changed files with 20 additions and 1 deletions
21
src/buffer.c
21
src/buffer.c
|
|
@ -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));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue