From: Stefan Monnier Date: Thu, 22 Nov 2007 20:29:48 +0000 (+0000) Subject: (do_symval_forwarding): Use same code as in find_symbol_value. X-Git-Tag: emacs-pretest-23.0.90~9538 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=8787dd7335ebf649c9d092b4419b65d2397ec4ac;p=emacs.git (do_symval_forwarding): Use same code as in find_symbol_value. (find_symbol_value): Use do_symval_forwarding. --- diff --git a/src/ChangeLog b/src/ChangeLog index d6a4d2a7151..49c9e8e9974 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,8 @@ 2007-11-22 Stefan Monnier + * data.c (do_symval_forwarding): Use same code as in find_symbol_value. + (find_symbol_value): Use do_symval_forwarding. + * data.c (set_internal): Set the value in the `cons-cell' (for Buffer_Local_values) not only for frame-local variables. diff --git a/src/data.c b/src/data.c index 787e81c9aed..0e3987ae540 100644 --- a/src/data.c +++ b/src/data.c @@ -864,7 +864,6 @@ do_symval_forwarding (valcontents) register Lisp_Object valcontents; { register Lisp_Object val; - int offset; if (MISCP (valcontents)) switch (XMISCTYPE (valcontents)) { @@ -879,11 +878,10 @@ do_symval_forwarding (valcontents) return *XOBJFWD (valcontents)->objvar; case Lisp_Misc_Buffer_Objfwd: - offset = XBUFFER_OBJFWD (valcontents)->offset; - return PER_BUFFER_VALUE (current_buffer, offset); + return PER_BUFFER_VALUE (current_buffer, + XBUFFER_OBJFWD (valcontents)->offset); case Lisp_Misc_Kboard_Objfwd: - offset = XKBOARD_OBJFWD (valcontents)->offset; /* We used to simply use current_kboard here, but from Lisp code, it's value is often unexpected. It seems nicer to allow constructions like this to work as intuitively expected: @@ -895,7 +893,8 @@ do_symval_forwarding (valcontents) last-command and real-last-command, and people may rely on that. I took a quick look at the Lisp codebase, and I don't think anything will break. --lorentey */ - return *(Lisp_Object *)(offset + (char *)FRAME_KBOARD (SELECTED_FRAME ())); + return *(Lisp_Object *)(XKBOARD_OBJFWD (valcontents)->offset + + (char *)FRAME_KBOARD (SELECTED_FRAME ())); } return valcontents; } @@ -1104,31 +1103,7 @@ find_symbol_value (symbol) if (BUFFER_LOCAL_VALUEP (valcontents)) valcontents = swap_in_symval_forwarding (symbol, valcontents); - if (MISCP (valcontents)) - { - switch (XMISCTYPE (valcontents)) - { - case Lisp_Misc_Intfwd: - XSETINT (val, *XINTFWD (valcontents)->intvar); - return val; - - case Lisp_Misc_Boolfwd: - return (*XBOOLFWD (valcontents)->boolvar ? Qt : Qnil); - - case Lisp_Misc_Objfwd: - return *XOBJFWD (valcontents)->objvar; - - case Lisp_Misc_Buffer_Objfwd: - return PER_BUFFER_VALUE (current_buffer, - XBUFFER_OBJFWD (valcontents)->offset); - - case Lisp_Misc_Kboard_Objfwd: - return *(Lisp_Object *)(XKBOARD_OBJFWD (valcontents)->offset - + (char *)FRAME_KBOARD (SELECTED_FRAME ())); - } - } - - return valcontents; + return do_symval_forwarding (valcontents); } DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0,