diff options
Diffstat (limited to 'src/data.c')
| -rw-r--r-- | src/data.c | 35 |
1 files changed, 5 insertions, 30 deletions
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) | |||
| 864 | register Lisp_Object valcontents; | 864 | register Lisp_Object valcontents; |
| 865 | { | 865 | { |
| 866 | register Lisp_Object val; | 866 | register Lisp_Object val; |
| 867 | int offset; | ||
| 868 | if (MISCP (valcontents)) | 867 | if (MISCP (valcontents)) |
| 869 | switch (XMISCTYPE (valcontents)) | 868 | switch (XMISCTYPE (valcontents)) |
| 870 | { | 869 | { |
| @@ -879,11 +878,10 @@ do_symval_forwarding (valcontents) | |||
| 879 | return *XOBJFWD (valcontents)->objvar; | 878 | return *XOBJFWD (valcontents)->objvar; |
| 880 | 879 | ||
| 881 | case Lisp_Misc_Buffer_Objfwd: | 880 | case Lisp_Misc_Buffer_Objfwd: |
| 882 | offset = XBUFFER_OBJFWD (valcontents)->offset; | 881 | return PER_BUFFER_VALUE (current_buffer, |
| 883 | return PER_BUFFER_VALUE (current_buffer, offset); | 882 | XBUFFER_OBJFWD (valcontents)->offset); |
| 884 | 883 | ||
| 885 | case Lisp_Misc_Kboard_Objfwd: | 884 | case Lisp_Misc_Kboard_Objfwd: |
| 886 | offset = XKBOARD_OBJFWD (valcontents)->offset; | ||
| 887 | /* We used to simply use current_kboard here, but from Lisp | 885 | /* We used to simply use current_kboard here, but from Lisp |
| 888 | code, it's value is often unexpected. It seems nicer to | 886 | code, it's value is often unexpected. It seems nicer to |
| 889 | allow constructions like this to work as intuitively expected: | 887 | allow constructions like this to work as intuitively expected: |
| @@ -895,7 +893,8 @@ do_symval_forwarding (valcontents) | |||
| 895 | last-command and real-last-command, and people may rely on | 893 | last-command and real-last-command, and people may rely on |
| 896 | that. I took a quick look at the Lisp codebase, and I | 894 | that. I took a quick look at the Lisp codebase, and I |
| 897 | don't think anything will break. --lorentey */ | 895 | don't think anything will break. --lorentey */ |
| 898 | return *(Lisp_Object *)(offset + (char *)FRAME_KBOARD (SELECTED_FRAME ())); | 896 | return *(Lisp_Object *)(XKBOARD_OBJFWD (valcontents)->offset |
| 897 | + (char *)FRAME_KBOARD (SELECTED_FRAME ())); | ||
| 899 | } | 898 | } |
| 900 | return valcontents; | 899 | return valcontents; |
| 901 | } | 900 | } |
| @@ -1104,31 +1103,7 @@ find_symbol_value (symbol) | |||
| 1104 | if (BUFFER_LOCAL_VALUEP (valcontents)) | 1103 | if (BUFFER_LOCAL_VALUEP (valcontents)) |
| 1105 | valcontents = swap_in_symval_forwarding (symbol, valcontents); | 1104 | valcontents = swap_in_symval_forwarding (symbol, valcontents); |
| 1106 | 1105 | ||
| 1107 | if (MISCP (valcontents)) | 1106 | return do_symval_forwarding (valcontents); |
| 1108 | { | ||
| 1109 | switch (XMISCTYPE (valcontents)) | ||
| 1110 | { | ||
| 1111 | case Lisp_Misc_Intfwd: | ||
| 1112 | XSETINT (val, *XINTFWD (valcontents)->intvar); | ||
| 1113 | return val; | ||
| 1114 | |||
| 1115 | case Lisp_Misc_Boolfwd: | ||
| 1116 | return (*XBOOLFWD (valcontents)->boolvar ? Qt : Qnil); | ||
| 1117 | |||
| 1118 | case Lisp_Misc_Objfwd: | ||
| 1119 | return *XOBJFWD (valcontents)->objvar; | ||
| 1120 | |||
| 1121 | case Lisp_Misc_Buffer_Objfwd: | ||
| 1122 | return PER_BUFFER_VALUE (current_buffer, | ||
| 1123 | XBUFFER_OBJFWD (valcontents)->offset); | ||
| 1124 | |||
| 1125 | case Lisp_Misc_Kboard_Objfwd: | ||
| 1126 | return *(Lisp_Object *)(XKBOARD_OBJFWD (valcontents)->offset | ||
| 1127 | + (char *)FRAME_KBOARD (SELECTED_FRAME ())); | ||
| 1128 | } | ||
| 1129 | } | ||
| 1130 | |||
| 1131 | return valcontents; | ||
| 1132 | } | 1107 | } |
| 1133 | 1108 | ||
| 1134 | DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, | 1109 | DEFUN ("symbol-value", Fsymbol_value, Ssymbol_value, 1, 1, 0, |