From 91a15bc634398fbf5092d4116022d45bc2ec3784 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Fri, 16 Sep 2011 10:14:48 -0400 Subject: [PATCH] * src/eval.c (Fquote): Document its non-consing behavior. Fixes: debbugs:9482 --- src/ChangeLog | 4 ++++ src/eval.c | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index cf75c28c385..9ce2629d442 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2011-09-16 Stefan Monnier + + * eval.c (Fquote): Document its non-consing behavior (bug#9482). + 2011-09-16 Eli Zaretskii * image.c (tiff_handler): Work around a bug in MinGW GCC 3.x (see diff --git a/src/eval.c b/src/eval.c index 57a273cd4aa..32b9d366fc3 100644 --- a/src/eval.c +++ b/src/eval.c @@ -475,6 +475,14 @@ usage: (setq [SYM VAL]...) */) DEFUN ("quote", Fquote, Squote, 1, UNEVALLED, 0, doc: /* Return the argument, without evaluating it. `(quote x)' yields `x'. +Warning: `quote' does not construct its return value, but just returns +the value that was pre-constructed by the Lisp reader (see info node +`(elisp)Printed Representation'). +This means that '(a . b) is not identical to (cons 'a 'b): the former +does not cons. Quoting should be reserved for constants that will +never be modified by side-effects, unless you like self-modifying code. +See the common pitfall in info node `(elisp)Rearrangement' for an example +of unexpected results when a quoted object is modified. usage: (quote ARG) */) (Lisp_Object args) { -- 2.39.2