mirror of
https://github.com/golang/go
synced 2024-11-23 16:50:06 -07:00
path/filepath: handle c: as first parameter in Join properly
This is CL 11882 brought back to life. Fixes #11551 Change-Id: I29810183957745442d1e9937f56a66fc9c6cc82a Reviewed-on: https://go-review.googlesource.com/17470 Reviewed-by: Russ Cox <rsc@golang.org> Run-TryBot: Alex Brainman <alex.brainman@gmail.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
05390a0793
commit
51a112fefc
@ -267,7 +267,12 @@ var winjointests = []JoinTest{
|
||||
{[]string{`C:\Windows\`, `System32`}, `C:\Windows\System32`},
|
||||
{[]string{`C:\Windows\`, ``}, `C:\Windows`},
|
||||
{[]string{`C:\`, `Windows`}, `C:\Windows`},
|
||||
{[]string{`C:`, `Windows`}, `C:\Windows`},
|
||||
{[]string{`C:`, `a`}, `C:a`},
|
||||
{[]string{`C:`, `a\b`}, `C:a\b`},
|
||||
{[]string{`C:`, `a`, `b`}, `C:a\b`},
|
||||
{[]string{`C:.`, `a`}, `C:a`},
|
||||
{[]string{`C:a`, `b`}, `C:a\b`},
|
||||
{[]string{`C:a`, `b`, `d`}, `C:a\b\d`},
|
||||
{[]string{`\\host\share`, `foo`}, `\\host\share\foo`},
|
||||
{[]string{`\\host\share\foo`}, `\\host\share\foo`},
|
||||
{[]string{`//host/share`, `foo/bar`}, `\\host\share\foo\bar`},
|
||||
|
@ -120,6 +120,11 @@ func join(elem []string) string {
|
||||
|
||||
// joinNonEmpty is like join, but it assumes that the first element is non-empty.
|
||||
func joinNonEmpty(elem []string) string {
|
||||
if len(elem[0]) == 2 && elem[0][1] == ':' {
|
||||
// First element is drive leter without terminating slash.
|
||||
// Keep path relative to current directory on that drive.
|
||||
return Clean(elem[0] + strings.Join(elem[1:], string(Separator)))
|
||||
}
|
||||
// The following logic prevents Join from inadvertently creating a
|
||||
// UNC path on Windows. Unless the first element is a UNC path, Join
|
||||
// shouldn't create a UNC path. See golang.org/issue/9167.
|
||||
|
Loading…
Reference in New Issue
Block a user