aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/buffer.c')
-rw-r--r--src/buffer.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/src/buffer.c b/src/buffer.c
index 65300cd9827..e371b3133ae 100644
--- a/src/buffer.c
+++ b/src/buffer.c
@@ -854,7 +854,26 @@ is the default binding of variable. */)
854 result = Fdefault_value (symbol); 854 result = Fdefault_value (symbol);
855 } 855 }
856 else 856 else
857 result = XCDR (result); 857 {
858 Lisp_Object valcontents;
859 Lisp_Object current_alist_element;
860
861 /* What binding is loaded right now? */
862 valcontents = SYMBOL_VALUE (symbol);
863 current_alist_element
864 = XCAR (XBUFFER_LOCAL_VALUE (valcontents)->cdr);
865
866 /* The value of the currently loaded binding is not
867 stored in it, but rather in the realvalue slot.
868 Store that value into the binding it belongs to
869 in case that is the one we are about to use. */
870
871 Fsetcdr (current_alist_element,
872 do_symval_forwarding (XBUFFER_LOCAL_VALUE (valcontents)->realvalue));
873
874 /* Now get the (perhaps updated) value out of the binding. */
875 result = XCDR (result);
876 }
858 877
859 if (EQ (result, Qunbound)) 878 if (EQ (result, Qunbound))
860 return Fsignal (Qvoid_variable, Fcons (symbol, Qnil)); 879 return Fsignal (Qvoid_variable, Fcons (symbol, Qnil));