emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/dash 3493fc9 076/316: Merge pull request #242 from magn


From: ELPA Syncer
Subject: [elpa] externals/dash 3493fc9 076/316: Merge pull request #242 from magnars/fix-infinite-loop-zip-interleave
Date: Mon, 15 Feb 2021 15:57:29 -0500 (EST)

branch: externals/dash
commit 3493fc97cf885adfd08b6e1db8f9af7c34fe9cb1
Merge: bdcaf68 7267556
Author: Matus Goljer <dota.keys@gmail.com>
Commit: GitHub <noreply@github.com>

    Merge pull request #242 from magnars/fix-infinite-loop-zip-interleave
    
    Fix infinite loop in -zip/-interleave when called with no arguments.
---
 dash.el         | 32 +++++++++++++++++---------------
 dev/examples.el |  6 ++++--
 2 files changed, 21 insertions(+), 17 deletions(-)

diff --git a/dash.el b/dash.el
index 4942772..2b2e71b 100644
--- a/dash.el
+++ b/dash.el
@@ -1104,11 +1104,12 @@ elements of LIST.  Keys are compared by `equal'."
 (defun -interleave (&rest lists)
   "Return a new list of the first item in each list, then the second etc."
   (declare (pure t) (side-effect-free t))
-  (let (result)
-    (while (-none? 'null lists)
-      (--each lists (!cons (car it) result))
-      (setq lists (-map 'cdr lists)))
-    (nreverse result)))
+  (when lists
+    (let (result)
+      (while (-none? 'null lists)
+        (--each lists (!cons (car it) result))
+        (setq lists (-map 'cdr lists)))
+      (nreverse result))))
 
 (defmacro --zip-with (form list1 list2)
   "Anaphoric form of `-zip-with'.
@@ -1150,16 +1151,17 @@ of cons cells. Otherwise, return the groupings as a 
list of lists.
 Please note! This distinction is being removed in an upcoming 3.0
 release of Dash. If you rely on this behavior, use -zip-pair instead."
   (declare (pure t) (side-effect-free t))
-  (let (results)
-    (while (-none? 'null lists)
-      (setq results (cons (mapcar 'car lists) results))
-      (setq lists (mapcar 'cdr lists)))
-    (setq results (nreverse results))
-    (if (= (length lists) 2)
-        ;; to support backward compatability, return
-        ;; a cons cell if two lists were provided
-        (--map (cons (car it) (cadr it)) results)
-      results)))
+  (when lists
+    (let (results)
+      (while (-none? 'null lists)
+        (setq results (cons (mapcar 'car lists) results))
+        (setq lists (mapcar 'cdr lists)))
+      (setq results (nreverse results))
+      (if (= (length lists) 2)
+          ;; to support backward compatability, return
+          ;; a cons cell if two lists were provided
+          (--map (cons (car it) (cadr it)) results)
+        results))))
 
 (defalias '-zip-pair '-zip)
 
diff --git a/dev/examples.el b/dev/examples.el
index 8b94fdb..da9da38 100644
--- a/dev/examples.el
+++ b/dev/examples.el
@@ -645,7 +645,8 @@ new list."
     (-interleave '(1 2) '("a" "b")) => '(1 "a" 2 "b")
     (-interleave '(1 2) '("a" "b") '("A" "B")) => '(1 "a" "A" 2 "b" "B")
     (-interleave '(1 2 3) '("a" "b")) => '(1 "a" 2 "b")
-    (-interleave '(1 2 3) '("a" "b" "c" "d")) => '(1 "a" 2 "b" 3 "c"))
+    (-interleave '(1 2 3) '("a" "b" "c" "d")) => '(1 "a" 2 "b" 3 "c")
+    (-interleave) => nil)
 
   (defexamples -zip-with
     (-zip-with '+ '(1 2 3) '(4 5 6)) => '(5 7 9)
@@ -657,7 +658,8 @@ new list."
     (-zip '(1 2 3) '(4 5 6 7)) => '((1 . 4) (2 . 5) (3 . 6))
     (-zip '(1 2 3 4) '(4 5 6)) => '((1 . 4) (2 . 5) (3 . 6))
     (-zip '(1 2 3) '(4 5 6) '(7 8 9)) => '((1 4 7) (2 5 8) (3 6 9))
-    (-zip '(1 2) '(3 4 5) '(6)) => '((1 3 6)))
+    (-zip '(1 2) '(3 4 5) '(6)) => '((1 3 6))
+    (-zip) => nil)
 
   (defexamples -zip-fill
     (-zip-fill 0 '(1 2 3 4 5) '(6 7 8 9)) => '((1 . 6) (2 . 7) (3 . 8) (4 . 9) 
(5 . 0)))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]