aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Petton2016-12-15 10:24:57 +0100
committerNicolas Petton2016-12-15 10:26:11 +0100
commit09a66ceb5e906e704be58d5f40c45096307f0b9e (patch)
tree38c6d80e6ff84430cf16511ba8e7edb40cb0e4cc
parentacbe32abddd9740acd756419f068cb4bc345567c (diff)
downloademacs-09a66ceb5e906e704be58d5f40c45096307f0b9e.tar.gz
emacs-09a66ceb5e906e704be58d5f40c45096307f0b9e.zip
Fix circular list handling in seq-mapn
* lisp/emacs-lisp/seq.el (seq-mapn): Do not copy list arguments. * test/lisp/emacs-lisp/seq-tests.el (test-seq-mapn-circular-lists): Add a regression test.
-rw-r--r--lisp/emacs-lisp/seq.el5
-rw-r--r--test/lisp/emacs-lisp/seq-tests.el5
2 files changed, 9 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/seq.el b/lisp/emacs-lisp/seq.el
index 5ddc5a53a32..9890e60614e 100644
--- a/lisp/emacs-lisp/seq.el
+++ b/lisp/emacs-lisp/seq.el
@@ -178,7 +178,10 @@ Return a list of the results.
178 178
179\(fn FUNCTION SEQUENCES...)" 179\(fn FUNCTION SEQUENCES...)"
180 (let ((result nil) 180 (let ((result nil)
181 (sequences (seq-map (lambda (s) (seq-into s 'list)) 181 (sequences (seq-map (lambda (s)
182 (if (listp s)
183 s
184 (seq-into s 'list)))
182 (cons sequence sequences)))) 185 (cons sequence sequences))))
183 (while (not (memq nil sequences)) 186 (while (not (memq nil sequences))
184 (push (apply function (seq-map #'car sequences)) result) 187 (push (apply function (seq-map #'car sequences)) result)
diff --git a/test/lisp/emacs-lisp/seq-tests.el b/test/lisp/emacs-lisp/seq-tests.el
index 2e533acce17..fc65c9834d6 100644
--- a/test/lisp/emacs-lisp/seq-tests.el
+++ b/test/lisp/emacs-lisp/seq-tests.el
@@ -386,5 +386,10 @@ Evaluate BODY for each created sequence.
386 (should-error (seq-random-elt [])) 386 (should-error (seq-random-elt []))
387 (should-error (seq-random-elt ""))) 387 (should-error (seq-random-elt "")))
388 388
389(ert-deftest test-seq-mapn-circular-lists ()
390 (let ((l1 '#1=(1 . #1#)))
391 (should (equal (seq-mapn #'+ '(3 4 5 7) l1)
392 '(4 5 6 8)))))
393
389(provide 'seq-tests) 394(provide 'seq-tests)
390;;; seq-tests.el ends here 395;;; seq-tests.el ends here