Mercurial > hg > xemacs-beta
diff src/symbols.c @ 195:a2f645c6b9f8 r20-3b24
Import from CVS: tag r20-3b24
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:59:05 +0200 |
parents | 3d6bfa290dbd |
children | e45d5e7c476e |
line wrap: on
line diff
--- a/src/symbols.c Mon Aug 13 09:58:32 2007 +0200 +++ b/src/symbols.c Mon Aug 13 09:59:05 2007 +0200 @@ -1510,8 +1510,14 @@ /* WARNING: This function can be called when current_buffer is 0 and Vselected_console is Qnil, early in initialization. */ struct console *dev; + Lisp_Object valcontents; CHECK_SYMBOL (sym); + + valcontents = XSYMBOL (sym)->value; + if (!SYMBOL_VALUE_MAGIC_P (valcontents)) + return valcontents; + if (CONSOLEP (Vselected_console)) dev = XCONSOLE (Vselected_console); else @@ -1588,9 +1594,16 @@ CHECK_SYMBOL (sym); retry: - reject_constant_symbols (sym, newval, 0, - UNBOUNDP (newval) ? Qmakunbound : Qset); valcontents = XSYMBOL (sym)->value; + if (NILP (sym) || EQ (sym, Qt) || SYMBOL_VALUE_MAGIC_P (valcontents)) + reject_constant_symbols (sym, newval, 0, + UNBOUNDP (newval) ? Qmakunbound : Qset); + else + { + XSYMBOL (sym)->value = newval; + return newval; + } + retry_2: if (SYMBOL_VALUE_MAGIC_P (valcontents))