mirror of
https://github.com/golang/go
synced 2024-11-22 03:24:41 -07:00
os: improve Windows fixLongPath
CL 574695 added caching the os.Chdir argument for Windows, and used the cached value to assess the length of the current working directory in addExtendedPrefix (used by fixLongPath). It did not take into account that Chdir can accept relative paths, and thus the pathLength calculation in addExtendedPrefix can be wrong. Let's only cache the os.Chdir argument if it's absolute, and clean the cache otherwise, thus improving the correctness of fixLongPath. For #41734 For #21782 For #36375 Change-Id: Ie24a5ed763a7aacc310666d2e4cbb8e298768670 Reviewed-on: https://go-review.googlesource.com/c/go/+/607437 Reviewed-by: Ian Lance Taylor <iant@google.com> Reviewed-by: Alex Brainman <alex.brainman@gmail.com> Reviewed-by: Damien Neil <dneil@google.com> Auto-Submit: Ian Lance Taylor <iant@google.com> Reviewed-by: Quim Muntal <quimmuntal@gmail.com> Reviewed-by: Cherry Mui <cherryyz@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
d2879efd02
commit
10ed134afe
@ -344,8 +344,13 @@ func Chdir(dir string) error {
|
||||
return &PathError{Op: "chdir", Path: dir, Err: e}
|
||||
}
|
||||
if runtime.GOOS == "windows" {
|
||||
abs := filepathlite.IsAbs(dir)
|
||||
getwdCache.Lock()
|
||||
getwdCache.dir = dir
|
||||
if abs {
|
||||
getwdCache.dir = dir
|
||||
} else {
|
||||
getwdCache.dir = ""
|
||||
}
|
||||
getwdCache.Unlock()
|
||||
}
|
||||
if log := testlog.Logger(); log != nil {
|
||||
|
Loading…
Reference in New Issue
Block a user