(set_internal, Fmakunbound): No error if setting
authorKarl Heuer <kwzh@gnu.org>
Sat, 11 Apr 1998 18:04:12 +0000 (18:04 +0000)
committerKarl Heuer <kwzh@gnu.org>
Sat, 11 Apr 1998 18:04:12 +0000 (18:04 +0000)
a keyword to itself.

src/data.c

index 5b3a33b..0eb415e 100644 (file)
@@ -617,7 +617,8 @@ DEFUN ("makunbound", Fmakunbound, Smakunbound, 1, 1, 0, "Make SYMBOL's value be
   CHECK_SYMBOL (symbol, 0);
   if (NILP (symbol) || EQ (symbol, Qt)
       || (XSYMBOL (symbol)->name->data[0] == ':'
-         && keyword_symbols_constant_flag))
+         && keyword_symbols_constant_flag
+         && ! EQ (XSYMBOL (symbol)->value, symbol)))
     return Fsignal (Qsetting_constant, Fcons (symbol, Qnil));
   Fset (symbol, Qunbound);
   return symbol;
@@ -968,7 +969,8 @@ set_internal (symbol, newval, bindflag)
   CHECK_SYMBOL (symbol, 0);
   if (NILP (symbol) || EQ (symbol, Qt)
       || (XSYMBOL (symbol)->name->data[0] == ':'
-         && keyword_symbols_constant_flag))
+         && keyword_symbols_constant_flag
+         && ! EQ (XSYMBOL (symbol)->value, symbol)))
     return Fsignal (Qsetting_constant, Fcons (symbol, Qnil));
   valcontents = XSYMBOL (symbol)->value;