@@ -397,7 +397,7 @@ defmodule Mix.Compilers.Elixir do
397
397
Enum . any? ( modules , & Map . has_key? ( modules_to_recompile , & 1 ) ) or
398
398
Enum . any? ( external , & stale_external? ( & 1 , modified , sources_stats ) ) or
399
399
( last_mtime > modified and
400
- ( missing_beam_file? ( dest , modules ) or digest != digest_file! ( source ) ) ) ,
400
+ ( missing_beam_file? ( dest , modules ) or digest_changed? ( source , digest ) ) ) ,
401
401
do: source
402
402
403
403
changed = new_paths ++ changed
@@ -427,7 +427,7 @@ defmodule Mix.Compilers.Elixir do
427
427
defp stale_external? ( { external , digest } , modified , sources_stats ) do
428
428
case sources_stats do
429
429
% { ^ external => { 0 , 0 } } -> digest != nil
430
- % { ^ external => { mtime , _ } } -> mtime > modified and digest != digest_file! ( external )
430
+ % { ^ external => { mtime , _ } } -> mtime > modified and digest_changed? ( external , digest )
431
431
end
432
432
end
433
433
@@ -441,8 +441,11 @@ defmodule Mix.Compilers.Elixir do
441
441
end )
442
442
end
443
443
444
- defp digest_file! ( file ) do
445
- file |> File . read! ( ) |> digest_contents ( )
444
+ defp digest_changed? ( file , digest ) do
445
+ case File . read ( file ) do
446
+ { :ok , binary } -> digest != digest_contents ( binary )
447
+ { :error , _ } -> true
448
+ end
446
449
end
447
450
448
451
defp digest_contents ( contents ) do
0 commit comments