aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJuanma Barranquero2012-06-29 01:04:27 +0200
committerJuanma Barranquero2012-06-29 01:04:27 +0200
commit2badeec4f436028eaf88ea6929f3223e7db38839 (patch)
treeec36fd02fd08f6810f39e32fe275fb1912f7d2ea
parent7d7e0027e7c7ad6584fd44c611b3c77be69391a9 (diff)
downloademacs-2badeec4f436028eaf88ea6929f3223e7db38839.tar.gz
emacs-2badeec4f436028eaf88ea6929f3223e7db38839.zip
lisp/emacs-lisp/cl-lib.el (cl-pushnew): Don't capture X (bug#11811).
-rw-r--r--lisp/ChangeLog4
-rw-r--r--lisp/emacs-lisp/cl-lib.el19
2 files changed, 14 insertions, 9 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 26b6c6fd322..e083b628cde 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,7 @@
12012-06-28 Juanma Barranquero <lekktu@gmail.com>
2
3 * emacs-lisp/cl-lib.el (cl-pushnew): Don't capture X (bug#11811).
4
12012-06-28 Julien Danjou <julien@danjou.info> 52012-06-28 Julien Danjou <julien@danjou.info>
2 6
3 * term.el (term-handle-colors-array): Use a set of new faces to 7 * term.el (term-handle-colors-array): Use a set of new faces to
diff --git a/lisp/emacs-lisp/cl-lib.el b/lisp/emacs-lisp/cl-lib.el
index 990e66d91aa..34351e4830f 100644
--- a/lisp/emacs-lisp/cl-lib.el
+++ b/lisp/emacs-lisp/cl-lib.el
@@ -151,15 +151,16 @@ an element already on the list.
151 [keywordp form]))) 151 [keywordp form])))
152 (if (symbolp place) 152 (if (symbolp place)
153 (if (null keys) 153 (if (null keys)
154 `(let ((x ,x)) 154 (let ((var (make-symbol "--cl-x--")))
155 (if (memql x ,place) 155 `(let ((,var ,x))
156 ;; This symbol may later on expand to actual code which then 156 (if (memql ,var ,place)
157 ;; trigger warnings like "value unused" since cl-pushnew's return 157 ;; This symbol may later on expand to actual code which then
158 ;; value is rarely used. It should not matter that other 158 ;; trigger warnings like "value unused" since cl-pushnew's return
159 ;; warnings may be silenced, since `place' is used earlier and 159 ;; value is rarely used. It should not matter that other
160 ;; should have triggered them already. 160 ;; warnings may be silenced, since `place' is used earlier and
161 (with-no-warnings ,place) 161 ;; should have triggered them already.
162 (setq ,place (cons x ,place)))) 162 (with-no-warnings ,place)
163 (setq ,place (cons ,var ,place)))))
163 (list 'setq place (cl-list* 'cl-adjoin x place keys))) 164 (list 'setq place (cl-list* 'cl-adjoin x place keys)))
164 (cl-list* 'cl-callf2 'cl-adjoin x place keys))) 165 (cl-list* 'cl-callf2 'cl-adjoin x place keys)))
165 166