]> Cypherpunks.ru repositories - gostls13.git/commitdiff
path/filepath: revert "fix Windows-specific Clean bug"
authorIan Lance Taylor <iant@golang.org>
Wed, 20 Feb 2019 02:12:13 +0000 (18:12 -0800)
committerIan Lance Taylor <iant@golang.org>
Wed, 20 Feb 2019 18:32:07 +0000 (18:32 +0000)
Revert CL 137055, which changed Clean("\\somepath\dir\") to return
"\\somepath\dir" on Windows. It's not entirely clear this is correct,
as this path is really "\\server\share\", and as such the trailing
slash may be the path on that share, much like "C:\". In any case, the
change broke existing code, so roll it back for now and rethink for 1.13.

Updates #27791
Fixes #30307

Change-Id: I69200b1efe38bdb6d452b744582a2bfbb3acbcec
Reviewed-on: https://go-review.googlesource.com/c/163077
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
src/path/filepath/path.go
src/path/filepath/path_test.go

index bbb90306a7f3891cac0492f9510f458b5d2cc9e5..aba1717e7d5e0c7186a0e2a91adb011730d71f0e 100644 (file)
@@ -96,19 +96,14 @@ func Clean(path string) string {
                }
                return originalPath + "."
        }
-
-       n := len(path)
-       if volLen > 2 && n == 1 && os.IsPathSeparator(path[0]) {
-               // UNC volume name with trailing slash.
-               return FromSlash(originalPath[:volLen])
-       }
        rooted := os.IsPathSeparator(path[0])
 
        // Invariants:
        //      reading from path; r is index of next byte to process.
-       //      writing to out; w is index of next byte to write.
-       //      dotdot is index in out where .. must stop, either because
+       //      writing to buf; w is index of next byte to write.
+       //      dotdot is index in buf where .. must stop, either because
        //              it is the leading slash or it is a leading ../../.. prefix.
+       n := len(path)
        out := lazybuf{path: path, volAndPath: originalPath, volLen: volLen}
        r, dotdot := 0, 0
        if rooted {
index 9c4c7ebedc3b4187285adcc1a0e95cc0c152739b..7a434a429249354ead0022039e3030e7b8bc614a 100644 (file)
@@ -93,9 +93,6 @@ var wincleantests = []PathTest{
        {`//host/share/foo/../baz`, `\\host\share\baz`},
        {`\\a\b\..\c`, `\\a\b\c`},
        {`\\a\b`, `\\a\b`},
-       {`\\a\b\`, `\\a\b`},
-       {`\\folder\share\foo`, `\\folder\share\foo`},
-       {`\\folder\share\foo\`, `\\folder\share\foo`},
 }
 
 func TestClean(t *testing.T) {