File 2103-Handle-prefetched-paths.patch of Package erlang

From a834d721e5047c5c43a8ede249fdf6711234ff1b Mon Sep 17 00:00:00 2001
From: Richard Carlsson <richardc@klarna.com>
Date: Tue, 22 Nov 2016 15:33:14 +0100
Subject: [PATCH 3/7] Handle prefetched paths

---
 lib/kernel/src/code.erl | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/lib/kernel/src/code.erl b/lib/kernel/src/code.erl
index bb19d67..0ad0676 100644
--- a/lib/kernel/src/code.erl
+++ b/lib/kernel/src/code.erl
@@ -738,11 +738,16 @@ where_is_file(File) when is_list(File) ->
     Path = get_path(),
     where_is_file(Path, File).
 
--spec where_is_file(Path :: file:filename(), Filename :: file:filename()) ->
-        file:filename() | 'non_existing'.
+%% To avoid unnecessary work when looking at many modules, this also
+%% accepts pairs of directories and pre-fetched contents in the path
+-spec where_is_file(Path :: [Dir|{Dir,Files}], Filename :: file:filename()) ->
+          'non_existing' | file:filename() when
+      Dir :: file:filename(), Files :: [file:filename()].
 
 where_is_file([], _) ->
     non_existing;
+where_is_file([{Path, Files}|Tail], File) ->
+    where_is_file(Tail, File, Path, Files);
 where_is_file([Path|Tail], File) ->
     case erl_prim_loader:list_dir(Path) of
 	{ok,Files} ->
-- 
2.10.2

openSUSE Build Service is sponsored by