Commit 045ef729 authored by Chong Yidong's avatar Chong Yidong

Fix for Eshell's for loop.

* eshell/esh-cmd.el (eshell-rewrite-for-command): Copy the body
list explicitly.

Fixes: debbugs:12571
parent 3503c798
2012-10-20 Chong Yidong <cyd@gnu.org>
* eshell/esh-cmd.el (eshell-rewrite-for-command): Copy the body
list explicitly (Bug#12571).
2012-10-20 Arne Jørgensen <arne@arnested.dk> 2012-10-20 Arne Jørgensen <arne@arnested.dk>
* progmodes/flymake.el (flymake-create-temp-inplace): Use * progmodes/flymake.el (flymake-create-temp-inplace): Use
......
...@@ -484,20 +484,22 @@ implemented via rewriting, rather than as a function." ...@@ -484,20 +484,22 @@ implemented via rewriting, rather than as a function."
(let ((body (car (last terms)))) (let ((body (car (last terms))))
(setcdr (last terms 2) nil) (setcdr (last terms 2) nil)
`(let ((for-items `(let ((for-items
(append (copy-tree
,@(mapcar (append
(lambda (elem) ,@(mapcar
(if (listp elem) (lambda (elem)
elem (if (listp elem)
`(list ,elem))) elem
(cdr (cddr terms))))) `(list ,elem)))
(eshell-command-body '(nil)) (cdr (cddr terms))))))
(eshell-command-body '(nil))
(eshell-test-body '(nil))) (eshell-test-body '(nil)))
(while (consp for-items) (while (car for-items)
(let ((,(intern (cadr terms)) (car for-items))) (let ((,(intern (cadr terms)) (car for-items)))
(eshell-protect (eshell-protect
,(eshell-invokify-arg body t))) ,(eshell-invokify-arg body t)))
(setq for-items (cdr for-items))) (setcar for-items (cadr for-items))
(setcdr for-items (cddr for-items)))
(eshell-close-handles (eshell-close-handles
eshell-last-command-status eshell-last-command-status
(list 'quote eshell-last-command-result)))))) (list 'quote eshell-last-command-result))))))
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment