comparison src/data.c @ 50305:77bee06b14c5

(store_symval_forwarding): Delete special read-only hack for type == -1, since we now use ->constant instead. (Fkill_local_variable): Don't use XBUFFER if it can be nil.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Tue, 25 Mar 2003 16:30:15 +0000
parents d23ab2416c49
children 247bd25de9e9
comparison
equal deleted inserted replaced
50304:d9d826db650f 50305:77bee06b14c5
895 case Lisp_Misc_Buffer_Objfwd: 895 case Lisp_Misc_Buffer_Objfwd:
896 { 896 {
897 int offset = XBUFFER_OBJFWD (valcontents)->offset; 897 int offset = XBUFFER_OBJFWD (valcontents)->offset;
898 Lisp_Object type; 898 Lisp_Object type;
899 899
900 type = PER_BUFFER_TYPE (offset);
901 if (XINT (type) == -1)
902 error ("Variable %s is read-only", SDATA (SYMBOL_NAME (symbol)));
903
904 if (! NILP (type) && ! NILP (newval) 900 if (! NILP (type) && ! NILP (newval)
905 && XTYPE (newval) != XINT (type)) 901 && XTYPE (newval) != XINT (type))
906 buffer_slot_type_mismatch (offset); 902 buffer_slot_type_mismatch (offset);
907 903
908 if (buf == NULL) 904 if (buf == NULL)
1614 1610
1615 /* If the symbol is set up with the current buffer's binding 1611 /* If the symbol is set up with the current buffer's binding
1616 loaded, recompute its value. We have to do it now, or else 1612 loaded, recompute its value. We have to do it now, or else
1617 forwarded objects won't work right. */ 1613 forwarded objects won't work right. */
1618 { 1614 {
1619 Lisp_Object *pvalbuf; 1615 Lisp_Object *pvalbuf, buf;
1620 valcontents = SYMBOL_VALUE (variable); 1616 valcontents = SYMBOL_VALUE (variable);
1621 pvalbuf = &XBUFFER_LOCAL_VALUE (valcontents)->buffer; 1617 pvalbuf = &XBUFFER_LOCAL_VALUE (valcontents)->buffer;
1622 if (current_buffer == XBUFFER (*pvalbuf)) 1618 XSETBUFFER (buf, current_buffer);
1619 if (EQ (buf, *pvalbuf))
1623 { 1620 {
1624 *pvalbuf = Qnil; 1621 *pvalbuf = Qnil;
1625 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0; 1622 XBUFFER_LOCAL_VALUE (valcontents)->found_for_buffer = 0;
1626 find_symbol_value (variable); 1623 find_symbol_value (variable);
1627 } 1624 }