]> git.eshelyaron.com Git - emacs.git/commitdiff
Eval macro arg just once
authorTino Calancha <tino.calancha@gmail.com>
Wed, 5 Feb 2020 18:05:23 +0000 (19:05 +0100)
committerTino Calancha <tino.calancha@gmail.com>
Wed, 5 Feb 2020 18:05:23 +0000 (19:05 +0100)
* lisp/emacs-lisp/cl-macs.el (cl--push-clause-loop-body):
Use `macroexp-let2' (Bug#39428).

lisp/emacs-lisp/cl-macs.el

index 9d0fd15bc3d1c43b55424b05ed9a28c2dff3e309..4c2f58907de68da81da611126643c7f1d877b3dd 100644 (file)
@@ -1037,9 +1037,10 @@ For more details, see Info node `(cl)Loop Facility'.
 
 (defmacro cl--push-clause-loop-body (clause)
   "Apply CLAUSE to both `cl--loop-conditions' and `cl--loop-body'."
-  `(progn
-     (push ,clause cl--loop-conditions)
-     (push ,clause cl--loop-body)))
+  (macroexp-let2 nil sym clause
+    `(progn
+       (push ,sym cl--loop-conditions)
+       (push ,sym cl--loop-body))))
 
 ;; Below is a complete spec for cl-loop, in several parts that correspond
 ;; to the syntax given in CLtL2.  The specs do more than specify where