aboutsummaryrefslogtreecommitdiffstats
path: root/lib/compiler/src/compile.erl
diff options
context:
space:
mode:
authorBjörn Gustavsson <[email protected]>2016-03-23 07:00:34 +0100
committerBjörn Gustavsson <[email protected]>2016-03-24 15:44:20 +0100
commitafff8b0fd74fda09ba8dc5f7bfe95b5cb345872e (patch)
tree3f1c23166a61dbc82b5e1287e7af91a73ec4be45 /lib/compiler/src/compile.erl
parent41d29391df8857a9645bd5b5889f5db5f5a7529c (diff)
downloadotp-afff8b0fd74fda09ba8dc5f7bfe95b5cb345872e.tar.gz
otp-afff8b0fd74fda09ba8dc5f7bfe95b5cb345872e.tar.bz2
otp-afff8b0fd74fda09ba8dc5f7bfe95b5cb345872e.zip
Fix compile:forms/1,2 crash when not in an existing directory
compile:forms/1,2 will crash when the current working directory has been deleted. Fix that problem, and while we are at it, also stop including {source,""} in module_info() when no source code file is given. Reported-at: http://bugs.erlang.org/browse/ERL-113 Reported-by: Adam Lindberg
Diffstat (limited to 'lib/compiler/src/compile.erl')
-rw-r--r--lib/compiler/src/compile.erl12
1 files changed, 11 insertions, 1 deletions
diff --git a/lib/compiler/src/compile.erl b/lib/compiler/src/compile.erl
index 332bc0bdf9..65566df025 100644
--- a/lib/compiler/src/compile.erl
+++ b/lib/compiler/src/compile.erl
@@ -1328,7 +1328,7 @@ save_core_code(St) ->
beam_asm(#compile{ifile=File,code=Code0,
abstract_code=Abst,mod_options=Opts0}=St) ->
- Source = filename:absname(File),
+ Source = paranoid_absname(File),
Opts1 = lists:map(fun({debug_info_key,_}) -> {debug_info_key,'********'};
(Other) -> Other
end, Opts0),
@@ -1337,6 +1337,16 @@ beam_asm(#compile{ifile=File,code=Code0,
{ok,Code} -> {ok,St#compile{code=Code,abstract_code=[]}}
end.
+paranoid_absname(""=File) ->
+ File;
+paranoid_absname(File) ->
+ case file:get_cwd() of
+ {ok,Cwd} ->
+ filename:absname(File, Cwd);
+ _ ->
+ File
+ end.
+
test_native(#compile{options=Opts}) ->
%% This test is done late, in case some other option has turned off native.
%% 'native' given on the command line can be overridden by