diff options
author | Luis Rascão <[email protected]> | 2014-06-27 00:08:07 +0100 |
---|---|---|
committer | Luis Rascão <[email protected]> | 2014-06-27 00:08:07 +0100 |
commit | ab50e4e5121c2c29b8a49916f8ac89e42e37a978 (patch) | |
tree | edc225a369d44e5125e1b2d842b87713ee9d0a30 /erts/preloaded/src | |
parent | c9e36ab16034bb7fe71f772df6bba22070976bbf (diff) | |
download | otp-ab50e4e5121c2c29b8a49916f8ac89e42e37a978.tar.gz otp-ab50e4e5121c2c29b8a49916f8ac89e42e37a978.tar.bz2 otp-ab50e4e5121c2c29b8a49916f8ac89e42e37a978.zip |
fix escript archive symlinked across drives
real_path method used while prim loading archive files was not taking into account
the fact that windows directory symlinks can be across different drives
(eg. c:\tmp\test is a symlink to j:\tmp\test). when performing a path split the drive
precedes the symlink, but that has be rewritten also since it's different. This issue
never arises in Unix since obviously there are no drives
Diffstat (limited to 'erts/preloaded/src')
-rw-r--r-- | erts/preloaded/src/erl_prim_loader.erl | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/erts/preloaded/src/erl_prim_loader.erl b/erts/preloaded/src/erl_prim_loader.erl index 578913b633..dfd6151b69 100644 --- a/erts/preloaded/src/erl_prim_loader.erl +++ b/erts/preloaded/src/erl_prim_loader.erl @@ -1487,7 +1487,12 @@ real_path(Name,[Path|Paths],Acc,Links) -> [""|_] = LinkPaths -> real_path(Name,LinkPaths++Paths,[],[ThisFile|Links]); LinkPaths -> - real_path(Name,LinkPaths++Paths,Acc,[ThisFile|Links]) + case erlang:system_info(os_type) of + {win32, _} -> + real_path(Name,LinkPaths++Paths,[],[ThisFile|Links]); + _ -> + real_path(Name,LinkPaths++Paths,Acc,[ThisFile|Links]) + end end; _ -> real_path(Name,Paths,This,Links) |