mirror of
https://github.com/golang/go
synced 2024-11-17 15:04:45 -07:00
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/40410 Reviewed-by: Alex Brainman <alex.brainman@gmail.com> Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
3692925c5e
commit
8a2cc22209
@ -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
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user