diff options
| author | Stefan Monnier | 2007-11-22 20:29:48 +0000 |
|---|---|---|
| committer | Stefan Monnier | 2007-11-22 20:29:48 +0000 |
| commit | 8787dd7335ebf649c9d092b4419b65d2397ec4ac (patch) | |
| tree | d0e74a77780258651c2afd51fa1ba0e132145cd9 /src | |
| parent | d0a3b8c2742982086d18a7bdd61b2a7b818072c7 (diff) | |
| download | emacs-8787dd7335ebf649c9d092b4419b65d2397ec4ac.tar.gz emacs-8787dd7335ebf649c9d092b4419b65d2397ec4ac.zip | |
(do_symval_forwarding): Use same code as in find_symbol_value.
(find_symbol_value): Use do_symval_forwarding.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 3 | ||||
| -rw-r--r-- | src/data.c | 35 |
2 files changed, 8 insertions, 30 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index d6a4d2a7151..49c9e8e9974 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,5 +1,8 @@ | |||
| 1 | 2007-11-22 Stefan Monnier <monnier@iro.umontreal.ca> | 1 | 2007-11-22 Stefan Monnier <monnier@iro.umontreal.ca> |
| 2 | 2 | ||
| 3 | * data.c (do_symval_forwarding): Use same code as in find_symbol_value. | ||
| 4 | (find_symbol_value): Use do_symval_forwarding. | ||
| 5 | |||
| 3 | * data.c (set_internal): Set the value in the `cons-cell' (for | 6 | * data.c (set_internal): Set the value in the `cons-cell' (for |
| 4 | Buffer_Local_values) not only for frame-local variables. | 7 | Buffer_Local_values) not only for frame-local variables. |
| 5 | 8 | ||
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, |