]> git.eshelyaron.com Git - emacs.git/commitdiff
lisp/let-alist.el (let-alist): Evaluate `alist' only once.
authorArtur Malabarba <bruce.connor.am@gmail.com>
Thu, 18 Dec 2014 20:32:56 +0000 (18:32 -0200)
committerArtur Malabarba <bruce.connor.am@gmail.com>
Thu, 18 Dec 2014 20:33:28 +0000 (18:33 -0200)
lisp/ChangeLog
lisp/let-alist.el

index 8978bde017dfb0a19042490a739657c7a390c56a..9828b8453686fa3db5d6d9823e6d2d45dfeb95d3 100644 (file)
@@ -1,3 +1,8 @@
+2014-12-18  Artur Malabarba  <bruce.connor.am@gmail.com>
+
+       * let-alist.el (let-alist): Evaluate the `alist' argument only
+       once.
+
 2014-12-18  Sam Steingold  <sds@gnu.org>
 
        * emacs-lisp/package.el: Avoid compilation warning by declaring
index 2efa027c4497947d162ecf7bf20a9647a5806390..8f02404cbdfd7513b119c421f8504893e2ce148a 100644 (file)
@@ -94,9 +94,11 @@ expands to
         .body
       .site))"
   (declare (indent 1) (debug t))
-  `(let ,(mapcar (lambda (x) `(,(car x) (cdr (assq ',(cdr x) ,alist))))
-                 (delete-dups (let-alist--deep-dot-search body)))
-     ,@body))
+  (let ((var (gensym "let-alist")))
+    `(let ((,var ,alist)
+           (let ,(mapcar (lambda (x) `(,(car x) (cdr (assq ',(cdr x) ,var))))
+                   (delete-dups (let-alist--deep-dot-search body)))
+             ,@body)))))
 
 (provide 'let-alist)