From 37241f62069b8f60e28d419ca502dd04ba567ab9 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Thu, 24 Oct 2013 21:10:27 -0400 Subject: [PATCH] * lisp/subr.el (add-to-list): Preserve return value in compiler-macro. Fixes: debbugs:15692 --- lisp/ChangeLog | 5 +++++ lisp/subr.el | 15 ++++++++------- 2 files changed, 13 insertions(+), 7 deletions(-) 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)))))) -- 2.39.2