aboutsummaryrefslogtreecommitdiffstats
path: root/src/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/data.c')
-rw-r--r--src/data.c46
1 files changed, 23 insertions, 23 deletions
diff --git a/src/data.c b/src/data.c
index 7928a1dc41d..c1699aeae73 100644
--- a/src/data.c
+++ b/src/data.c
@@ -1122,20 +1122,21 @@ store_symval_forwarding (lispfwd valcontents, Lisp_Object newval,
1122 int offset = XBUFFER_OBJFWD (valcontents)->offset; 1122 int offset = XBUFFER_OBJFWD (valcontents)->offset;
1123 Lisp_Object predicate = XBUFFER_OBJFWD (valcontents)->predicate; 1123 Lisp_Object predicate = XBUFFER_OBJFWD (valcontents)->predicate;
1124 1124
1125 if (!NILP (newval)) 1125 if (!NILP (newval) && !NILP (predicate))
1126 { 1126 {
1127 if (SYMBOLP (predicate)) 1127 eassert (SYMBOLP (predicate));
1128 Lisp_Object choiceprop = Fget (predicate, Qchoice);
1129 if (!NILP (choiceprop))
1128 { 1130 {
1129 Lisp_Object prop; 1131 if (NILP (Fmemq (newval, choiceprop)))
1130 1132 wrong_choice (choiceprop, newval);
1131 if ((prop = Fget (predicate, Qchoice), !NILP (prop))) 1133 }
1132 { 1134 else
1133 if (NILP (Fmemq (newval, prop))) 1135 {
1134 wrong_choice (prop, newval); 1136 Lisp_Object rangeprop = Fget (predicate, Qrange);
1135 } 1137 if (CONSP (rangeprop))
1136 else if ((prop = Fget (predicate, Qrange), !NILP (prop)))
1137 { 1138 {
1138 Lisp_Object min = XCAR (prop), max = XCDR (prop); 1139 Lisp_Object min = XCAR (rangeprop), max = XCDR (rangeprop);
1139 if (! NUMBERP (newval) 1140 if (! NUMBERP (newval)
1140 || NILP (CALLN (Fleq, min, newval, max))) 1141 || NILP (CALLN (Fleq, min, newval, max)))
1141 wrong_range (min, max, newval); 1142 wrong_range (min, max, newval);
@@ -1301,15 +1302,13 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where,
1301 enum Set_Internal_Bind bindflag) 1302 enum Set_Internal_Bind bindflag)
1302{ 1303{
1303 bool voide = EQ (newval, Qunbound); 1304 bool voide = EQ (newval, Qunbound);
1304 struct Lisp_Symbol *sym;
1305 Lisp_Object tem1;
1306 1305
1307 /* If restoring in a dead buffer, do nothing. */ 1306 /* If restoring in a dead buffer, do nothing. */
1308 /* if (BUFFERP (where) && NILP (XBUFFER (where)->name)) 1307 /* if (BUFFERP (where) && NILP (XBUFFER (where)->name))
1309 return; */ 1308 return; */
1310 1309
1311 CHECK_SYMBOL (symbol); 1310 CHECK_SYMBOL (symbol);
1312 sym = XSYMBOL (symbol); 1311 struct Lisp_Symbol *sym = XSYMBOL (symbol);
1313 switch (sym->u.s.trapped_write) 1312 switch (sym->u.s.trapped_write)
1314 { 1313 {
1315 case SYMBOL_NOWRITE: 1314 case SYMBOL_NOWRITE:
@@ -1328,9 +1327,10 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where,
1328 bindflag == SET_INTERNAL_UNBIND? Qunlet : 1327 bindflag == SET_INTERNAL_UNBIND? Qunlet :
1329 voide? Qmakunbound : Qset), 1328 voide? Qmakunbound : Qset),
1330 where); 1329 where);
1331 /* FALLTHROUGH! */ 1330 break;
1331
1332 case SYMBOL_UNTRAPPED_WRITE: 1332 case SYMBOL_UNTRAPPED_WRITE:
1333 break; 1333 break;
1334 1334
1335 default: emacs_abort (); 1335 default: emacs_abort ();
1336 } 1336 }
@@ -1363,8 +1363,9 @@ set_internal (Lisp_Object symbol, Lisp_Object newval, Lisp_Object where,
1363 1363
1364 /* Find the new binding. */ 1364 /* Find the new binding. */
1365 XSETSYMBOL (symbol, sym); /* May have changed via aliasing. */ 1365 XSETSYMBOL (symbol, sym); /* May have changed via aliasing. */
1366 tem1 = assq_no_quit (symbol, 1366 Lisp_Object tem1
1367 BVAR (XBUFFER (where), local_var_alist)); 1367 = assq_no_quit (symbol,
1368 BVAR (XBUFFER (where), local_var_alist));
1368 set_blv_where (blv, where); 1369 set_blv_where (blv, where);
1369 blv->found = true; 1370 blv->found = true;
1370 1371
@@ -1649,10 +1650,8 @@ void
1649set_default_internal (Lisp_Object symbol, Lisp_Object value, 1650set_default_internal (Lisp_Object symbol, Lisp_Object value,
1650 enum Set_Internal_Bind bindflag) 1651 enum Set_Internal_Bind bindflag)
1651{ 1652{
1652 struct Lisp_Symbol *sym;
1653
1654 CHECK_SYMBOL (symbol); 1653 CHECK_SYMBOL (symbol);
1655 sym = XSYMBOL (symbol); 1654 struct Lisp_Symbol *sym = XSYMBOL (symbol);
1656 switch (sym->u.s.trapped_write) 1655 switch (sym->u.s.trapped_write)
1657 { 1656 {
1658 case SYMBOL_NOWRITE: 1657 case SYMBOL_NOWRITE:
@@ -1669,9 +1668,10 @@ set_default_internal (Lisp_Object symbol, Lisp_Object value,
1669 /* Setting due to thread switching doesn't count. */ 1668 /* Setting due to thread switching doesn't count. */
1670 && bindflag != SET_INTERNAL_THREAD_SWITCH) 1669 && bindflag != SET_INTERNAL_THREAD_SWITCH)
1671 notify_variable_watchers (symbol, value, Qset_default, Qnil); 1670 notify_variable_watchers (symbol, value, Qset_default, Qnil);
1672 /* FALLTHROUGH! */ 1671 break;
1672
1673 case SYMBOL_UNTRAPPED_WRITE: 1673 case SYMBOL_UNTRAPPED_WRITE:
1674 break; 1674 break;
1675 1675
1676 default: emacs_abort (); 1676 default: emacs_abort ();
1677 } 1677 }