diff --git a/src/utils.jl b/src/utils.jl index 2b652d7f80..45df5dc6c5 100644 --- a/src/utils.jl +++ b/src/utils.jl @@ -119,7 +119,6 @@ end # try to call realpath on as much as possible function safe_realpath(path) - isempty(path) && return path if ispath(path) try return realpath(path) @@ -128,6 +127,8 @@ function safe_realpath(path) end end a, b = splitdir(path) + # path cannot be reduced at the root or drive, avoid stack overflow + isempty(b) && return path return joinpath(safe_realpath(a), b) end diff --git a/test/misc.jl b/test/misc.jl index e9b3d00ff6..3a386d161a 100644 --- a/test/misc.jl +++ b/test/misc.jl @@ -19,8 +19,9 @@ end end @testset "safe_realpath" begin + realpath(Sys.BINDIR) == Pkg.safe_realpath(Sys.BINDIR) # issue #3085 - for p in ("", "some-non-existing-path") + for p in ("", "some-non-existing-path", "some-non-existing-drive:") @test p == Pkg.safe_realpath(p) end end