From: Stefan Monnier Date: Fri, 25 Oct 2013 01:10:27 +0000 (-0400) Subject: * lisp/subr.el (add-to-list): Preserve return value in compiler-macro. X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~1141 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=37241f62069b8f60e28d419ca502dd04ba567ab9;p=emacs.git * lisp/subr.el (add-to-list): Preserve return value in compiler-macro. Fixes: debbugs:15692 --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 00d8c4240bd..2513f838b57 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2013-10-25 Stefan Monnier + + * subr.el (add-to-list): Preserve return value in compiler-macro + (bug#15692). + 2013-10-25 Rüdiger Sonderfeld * progmodes/octave.el (octave-lookfor): Handle empty lookfor diff --git a/lisp/subr.el b/lisp/subr.el index 952b9b601dc..05bbe6ea649 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -1541,13 +1541,14 @@ other hooks, such as major mode hooks, can do the job." (byte-compile-log-warning msg t :error)))) (code (macroexp-let2 macroexp-copyable-p x element - `(unless ,(if compare-fn - (progn - (require 'cl-lib) - `(cl-member ,x ,sym :test ,compare-fn)) - ;; For bootstrapping reasons, don't rely on - ;; cl--compiler-macro-member for the base case. - `(member ,x ,sym)) + `(if ,(if compare-fn + (progn + (require 'cl-lib) + `(cl-member ,x ,sym :test ,compare-fn)) + ;; For bootstrapping reasons, don't rely on + ;; cl--compiler-macro-member for the base case. + `(member ,x ,sym)) + ,sym ,(if append `(setq ,sym (append ,sym (list ,x))) `(push ,x ,sym))))))