From 91a15bc634398fbf5092d4116022d45bc2ec3784 Mon Sep 17 00:00:00 2001
From: Stefan Monnier <monnier@iro.umontreal.ca>
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  <monnier@iro.umontreal.ca>
+
+	* eval.c (Fquote): Document its non-consing behavior (bug#9482).
+
 2011-09-16  Eli Zaretskii  <eliz@gnu.org>
 
 	* 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.5