Skip to content

Commit 3d756ac

Browse files
author
José Valim
committed
Do not assume all load path exist
A path can be added to the load path and then removed from the filesystem. Signed-off-by: José Valim <jose.valim@plataformatec.com.br>
1 parent e6ed1d5 commit 3d756ac

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

lib/mix/lib/mix/task.ex

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,13 +68,19 @@ defmodule Mix.Task do
6868
# entire load path so make sure we only return unique modules.
6969

7070
for(dir <- dirs,
71-
{:ok, files} = :erl_prim_loader.list_dir(to_charlist(dir)),
72-
file <- files,
71+
file <- safe_list_dir(to_charlist(dir)),
7372
mod = task_from_path(file),
7473
do: mod)
7574
|> Enum.uniq
7675
end
7776

77+
defp safe_list_dir(path) do
78+
case :erl_prim_loader.list_dir(path) do
79+
{:ok, paths} -> paths
80+
{:error, _} -> []
81+
end
82+
end
83+
7884
@prefix_size byte_size("Elixir.Mix.Tasks.")
7985
@suffix_size byte_size(".beam")
8086

0 commit comments

Comments
 (0)