Commit 8a2cc222 authored by Hiroshi Ioka's avatar Hiroshi Ioka Committed by Alex Brainman

os: handle relative symlinks starting with slash in Stat on windows

https://go-review.googlesource.com/c/39932/ handles relative symlinks.
But that change is incomplete.
We also have to handle relative symlinks starting with slash too.

Fixes #19937

Change-Id: I50dbccbaf270cb48a08fa57e5f450e5da18a7701
Reviewed-on: https://go-review.googlesource.com/40410Reviewed-by: 's avatarAlex Brainman <alex.brainman@gmail.com>
Run-TryBot: Alex Brainman <alex.brainman@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
parent 3692925c
......@@ -1813,6 +1813,23 @@ func TestStatRelativeSymlink(t *testing.T) {
if !SameFile(st, st1) {
t.Error("Stat doesn't follow relative symlink")
}
if runtime.GOOS == "windows" {
Remove(link)
err = Symlink(target[len(filepath.VolumeName(target)):], link)
if err != nil {
t.Fatal(err)
}
st1, err := Stat(link)
if err != nil {
t.Fatal(err)
}
if !SameFile(st, st1) {
t.Error("Stat doesn't follow relative symlink")
}
}
}
func TestReadAtEOF(t *testing.T) {
......
......@@ -75,9 +75,12 @@ func Stat(name string) (FileInfo, error) {
if err != nil {
return nil, err
}
if isAbs(newname) {
switch {
case isAbs(newname):
name = newname
} else {
case len(newname) > 0 && IsPathSeparator(newname[0]):
name = volumeName(name) + newname
default:
name = dirname(name) + `\` + newname
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment