diff options
author | Björn Gustavsson <[email protected]> | 2011-02-21 16:53:34 +0100 |
---|---|---|
committer | Björn Gustavsson <[email protected]> | 2011-08-16 15:22:23 +0200 |
commit | 053fb064496043207cfa807c900077f9bbc4c7d1 (patch) | |
tree | e0de0000953388727538571bdf2c1cda28a7b27b /lib/stdlib/src | |
parent | 3347602be3c8a8bad3652c10e1e2db01315269e3 (diff) | |
download | otp-053fb064496043207cfa807c900077f9bbc4c7d1.tar.gz otp-053fb064496043207cfa807c900077f9bbc4c7d1.tar.bz2 otp-053fb064496043207cfa807c900077f9bbc4c7d1.zip |
compiler: Don't create filenames starting with "./"
In the location information tables in the run-time system, source
filenames that are the same as the module name plus ".erl" extension
are not stored explicitly, thus saving memory.
To take advantage of that optimization, avoid complicating the names of
files in the current working directory; specifically, make sure that
"./" is not prepended to the name.
Diffstat (limited to 'lib/stdlib/src')
-rw-r--r-- | lib/stdlib/src/epp.erl | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/lib/stdlib/src/epp.erl b/lib/stdlib/src/epp.erl index d804c1dee5..230a4a0612 100644 --- a/lib/stdlib/src/epp.erl +++ b/lib/stdlib/src/epp.erl @@ -684,7 +684,7 @@ scan_include_lib([{'(',_Llp},{string,_Lf,NewName0},{')',_Lrp},{dot,_Ld}], {error,_E1} -> case catch find_lib_dir(NewName) of {LibDir, Rest} when is_list(LibDir) -> - LibName = filename:join([LibDir | Rest]), + LibName = fname_join([LibDir | Rest]), case file:open(LibName, [read]) of {ok,NewF} -> ExtraPath = [filename:dirname(LibName)], @@ -1154,7 +1154,12 @@ expand_var1(NewName) -> [[$$ | Var] | Rest] = filename:split(NewName), Value = os:getenv(Var), true = Value =/= false, - {ok, filename:join([Value | Rest])}. + {ok, fname_join([Value | Rest])}. + +fname_join(["." | [_|_]=Rest]) -> + fname_join(Rest); +fname_join(Components) -> + filename:join(Components). %% The line only. (Other tokens may have the column and text as well...) loc_attr(Line) when is_integer(Line) -> |