diff options
| author | Tom Tromey | 2013-06-03 12:25:05 -0600 |
|---|---|---|
| committer | Tom Tromey | 2013-06-03 12:25:05 -0600 |
| commit | 68359abba96d7ec4db8aab3d3dd9cf1105c3bab5 (patch) | |
| tree | 862703e7e1a1888170136a8296a5750d6b2ae2eb /src/data.c | |
| parent | cbcba8ce7f980b01c18c0fd561ef6687b1361507 (diff) | |
| parent | e2d8a6f0a229b4ebe26484b892ec4f14888f58b6 (diff) | |
| download | emacs-68359abba96d7ec4db8aab3d3dd9cf1105c3bab5.tar.gz emacs-68359abba96d7ec4db8aab3d3dd9cf1105c3bab5.zip | |
merge from trunk; clean up some issues
Diffstat (limited to 'src/data.c')
| -rw-r--r-- | src/data.c | 62 |
1 files changed, 15 insertions, 47 deletions
diff --git a/src/data.c b/src/data.c index 8a66cbe9197..c6cb1b43dd6 100644 --- a/src/data.c +++ b/src/data.c | |||
| @@ -101,9 +101,10 @@ wrong_type_argument (register Lisp_Object predicate, register Lisp_Object value) | |||
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | void | 103 | void |
| 104 | pure_write_error (void) | 104 | pure_write_error (Lisp_Object obj) |
| 105 | { | 105 | { |
| 106 | error ("Attempt to modify read-only object"); | 106 | Fsignal (Qerror, Fcons (build_string ("Attempt to modify read-only object"), |
| 107 | Fcons (obj, Qnil))); | ||
| 107 | } | 108 | } |
| 108 | 109 | ||
| 109 | void | 110 | void |
| @@ -1106,40 +1107,6 @@ DEFUN ("set", Fset, Sset, 2, 2, 0, | |||
| 1106 | return newval; | 1107 | return newval; |
| 1107 | } | 1108 | } |
| 1108 | 1109 | ||
| 1109 | /* Return true if SYMBOL currently has a let-binding | ||
| 1110 | which was made in the buffer that is now current. */ | ||
| 1111 | |||
| 1112 | static bool | ||
| 1113 | let_shadows_buffer_binding_p (struct Lisp_Symbol *symbol) | ||
| 1114 | { | ||
| 1115 | struct specbinding *p; | ||
| 1116 | |||
| 1117 | for (p = specpdl_ptr; p > specpdl; ) | ||
| 1118 | if ((--p)->func == NULL | ||
| 1119 | && CONSP (p->symbol)) | ||
| 1120 | { | ||
| 1121 | struct Lisp_Symbol *let_bound_symbol = XSYMBOL (XCAR (p->symbol)); | ||
| 1122 | eassert (let_bound_symbol->redirect != SYMBOL_VARALIAS); | ||
| 1123 | if (symbol == let_bound_symbol | ||
| 1124 | && XBUFFER (XCDR (XCDR (p->symbol))) == current_buffer) | ||
| 1125 | return 1; | ||
| 1126 | } | ||
| 1127 | |||
| 1128 | return 0; | ||
| 1129 | } | ||
| 1130 | |||
| 1131 | static bool | ||
| 1132 | let_shadows_global_binding_p (Lisp_Object symbol) | ||
| 1133 | { | ||
| 1134 | struct specbinding *p; | ||
| 1135 | |||
| 1136 | for (p = specpdl_ptr; p > specpdl; ) | ||
| 1137 | if ((--p)->func == NULL && EQ (p->symbol, symbol)) | ||
| 1138 | return 1; | ||
| 1139 | |||
| 1140 | return 0; | ||
| 1141 | } | ||
| 1142 | |||
| 1143 | /* Store the value NEWVAL into SYMBOL. | 1110 | /* Store the value NEWVAL into SYMBOL. |
| 1144 | If buffer/frame-locality is an issue, WHERE specifies which context to use. | 1111 | If buffer/frame-locality is an issue, WHERE specifies which context to use. |
| 1145 | (nil stands for the current buffer/frame). | 1112 | (nil stands for the current buffer/frame). |
| @@ -1878,17 +1845,18 @@ BUFFER defaults to the current buffer. */) | |||
| 1878 | XSETBUFFER (tmp, buf); | 1845 | XSETBUFFER (tmp, buf); |
| 1879 | XSETSYMBOL (variable, sym); /* Update in case of aliasing. */ | 1846 | XSETSYMBOL (variable, sym); /* Update in case of aliasing. */ |
| 1880 | 1847 | ||
| 1881 | for (tail = BVAR (buf, local_var_alist); CONSP (tail); tail = XCDR (tail)) | 1848 | if (EQ (blv->where, tmp)) /* The binding is already loaded. */ |
| 1882 | { | 1849 | return blv_found (blv) ? Qt : Qnil; |
| 1883 | elt = XCAR (tail); | 1850 | else |
| 1884 | if (EQ (variable, XCAR (elt))) | 1851 | for (tail = BVAR (buf, local_var_alist); CONSP (tail); tail = XCDR (tail)) |
| 1885 | { | 1852 | { |
| 1886 | eassert (!blv->frame_local); | 1853 | elt = XCAR (tail); |
| 1887 | eassert (blv_found (blv) || !EQ (blv->where, tmp)); | 1854 | if (EQ (variable, XCAR (elt))) |
| 1888 | return Qt; | 1855 | { |
| 1889 | } | 1856 | eassert (!blv->frame_local); |
| 1890 | } | 1857 | return Qt; |
| 1891 | eassert (!blv_found (blv) || !EQ (blv->where, tmp)); | 1858 | } |
| 1859 | } | ||
| 1892 | return Qnil; | 1860 | return Qnil; |
| 1893 | } | 1861 | } |
| 1894 | case SYMBOL_FORWARDED: | 1862 | case SYMBOL_FORWARDED: |