Skip to content

Commit a8824ba

Browse files
alecostardjosevalim
authored andcommitted
Fix Stream.zip/1 hanging on empty list (#12461)
1 parent 476b4fd commit a8824ba

File tree

2 files changed

+4
-0
lines changed

2 files changed

+4
-0
lines changed

lib/elixir/lib/stream.ex

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1315,6 +1315,8 @@ defmodule Stream do
13151315
{:suspended, acc, &zip_list(enumerables, &1, fun, zip_fun)}
13161316
end
13171317

1318+
defp zip_list([], {:cont, acc}, _fun, _zip_fun), do: {:done, acc}
1319+
13181320
defp zip_list(enumerables, {:cont, acc}, fun, zip_fun) do
13191321
case zip_list_heads_tails(enumerables, [], []) do
13201322
{heads, tails} -> zip_list(tails, fun.(zip_fun.(heads), acc), fun, zip_fun)

lib/elixir/test/elixir/stream_test.exs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,6 +1340,8 @@ defmodule StreamTest do
13401340
assert Stream.chunk_every([0, 1, 2, 3], 2) |> Stream.zip() |> Enum.to_list() ==
13411341
[{0, 2}, {1, 3}]
13421342

1343+
assert Stream.zip([]) |> Enum.to_list() == []
1344+
13431345
stream = %HaltAcc{acc: 1..3}
13441346
assert Stream.zip([1..3, stream]) |> Enum.to_list() == [{1, 1}, {2, 2}, {3, 3}]
13451347

0 commit comments

Comments
 (0)