Commit 52940c51ec9d6acf79fa0aeb5be0f921e8a89e62
- Diff rendering mode:
- inline
- side by side
src/data.c
(26 / 1)
|   | |||
| 92 | 92 | Lisp_Object Qinteractive_form; | |
| 93 | 93 | ||
| 94 | 94 | static Lisp_Object swap_in_symval_forwarding P_ ((Lisp_Object, Lisp_Object)); | |
| 95 | static int let_shadows_buffer_binding_p (struct Lisp_Symbol *symbol); | ||
| 95 | 96 | ||
| 96 | 97 | Lisp_Object impl_Vmost_positive_fixnum, impl_Vmost_negative_fixnum; | |
| 97 | 98 | ||
| … | … | ||
| 1183 | 1183 | def: | |
| 1184 | 1184 | valcontents = SYMBOL_VALUE (symbol); | |
| 1185 | 1185 | if (BUFFER_LOCAL_VALUEP (valcontents)) | |
| 1186 | BLOCAL_REALVALUE (XBUFFER_LOCAL_VALUE (valcontents)) = newval; | ||
| 1186 | { | ||
| 1187 | Lisp_Object v = BLOCAL_CDR (XBUFFER_LOCAL_VALUE (valcontents)); | ||
| 1188 | if (! let_shadows_buffer_binding_p (XSYMBOL (symbol))) | ||
| 1189 | { | ||
| 1190 | Lisp_Object it; | ||
| 1191 | for (it = XBUFFER_LOCAL_VALUE (valcontents)->thread_data; | ||
| 1192 | !NILP (it); it = XCDR (it)) | ||
| 1193 | { | ||
| 1194 | Lisp_Object head = XCDR (XCAR (it)); | ||
| 1195 | if (EQ (BLOCAL_BUFFER (XBUFFER_LOCAL_VALUE (valcontents)), | ||
| 1196 | BLOCAL_BUFFER_VEC (head)) | ||
| 1197 | && (! XBUFFER_LOCAL_VALUE (valcontents)->check_frame | ||
| 1198 | || EQ (selected_frame, BLOCAL_FRAME_VEC (head)))) | ||
| 1199 | { | ||
| 1200 | Lisp_Object rv | ||
| 1201 | = XBUFFER_LOCAL_VALUE (valcontents)->realvalue; | ||
| 1202 | Fsetcdr (assq_no_quit (XCAR (XCAR (it)), | ||
| 1203 | XTHREADLOCAL (rv)->thread_alist), | ||
| 1204 | newval); | ||
| 1205 | Fsetcdr (XCAR (BLOCAL_CDR_VEC (head)), newval); | ||
| 1206 | } | ||
| 1207 | } | ||
| 1208 | } | ||
| 1209 | BLOCAL_REALVALUE (XBUFFER_LOCAL_VALUE (valcontents)) = newval; | ||
| 1210 | } | ||
| 1187 | 1211 | else if (THREADLOCALP (valcontents)) | |
| 1188 | 1212 | { | |
| 1189 | 1213 | Lisp_Object val = indirect_variable (XSYMBOL (symbol))->value; |

