]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix circular list handling in seq-mapn
authorNicolas Petton <nicolas@petton.fr>
Thu, 15 Dec 2016 09:24:57 +0000 (10:24 +0100)
committerNicolas Petton <nicolas@petton.fr>
Thu, 15 Dec 2016 09:26:11 +0000 (10:26 +0100)
* 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.

lisp/emacs-lisp/seq.el
test/lisp/emacs-lisp/seq-tests.el

index 5ddc5a53a328c4b48e63a2ec701d9ca9ca09be99..9890e60614e1e12dbb8cef32f46b6dc3e9b3ffa3 100644 (file)
@@ -178,7 +178,10 @@ Return a list of the results.
 
 \(fn FUNCTION SEQUENCES...)"
   (let ((result nil)
-        (sequences (seq-map (lambda (s) (seq-into s 'list))
+        (sequences (seq-map (lambda (s)
+                              (if (listp s)
+                                  s
+                                (seq-into s 'list)))
                             (cons sequence sequences))))
     (while (not (memq nil sequences))
       (push (apply function (seq-map #'car sequences)) result)
index 2e533acce175401dff213851fbbd754462442b84..fc65c9834d66139dbeec8a6c120b9413f492aa95 100644 (file)
@@ -386,5 +386,10 @@ Evaluate BODY for each created sequence.
   (should-error (seq-random-elt []))
   (should-error (seq-random-elt "")))
 
+(ert-deftest test-seq-mapn-circular-lists ()
+  (let ((l1 '#1=(1 . #1#)))
+    (should (equal (seq-mapn #'+ '(3 4 5 7) l1)
+                   '(4 5 6 8)))))
+
 (provide 'seq-tests)
 ;;; seq-tests.el ends here