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;
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;