diff options
| author | Nicolas Petton | 2016-12-15 10:24:57 +0100 |
|---|---|---|
| committer | Nicolas Petton | 2016-12-15 10:26:11 +0100 |
| commit | 09a66ceb5e906e704be58d5f40c45096307f0b9e (patch) | |
| tree | 38c6d80e6ff84430cf16511ba8e7edb40cb0e4cc | |
| parent | acbe32abddd9740acd756419f068cb4bc345567c (diff) | |
| download | emacs-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.el | 5 | ||||
| -rw-r--r-- | test/lisp/emacs-lisp/seq-tests.el | 5 |
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 |