From: Mohit Agarwal Date: Mon, 16 Nov 2015 15:29:35 +0000 (+0530) Subject: path/filepath: in Rel use case-insensitive comparison on Windows X-Git-Tag: go1.6beta1~409 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=2619dccf3c44a38c7514c3db29d871d0640e83cb;p=gostls13.git path/filepath: in Rel use case-insensitive comparison on Windows Compare basepath and targetpath using strings.EqualFold. The absence of this on Windows causes an unterminating condition in `for` statement later in the function. Fixes #13258 Change-Id: Ib5a0caba864ee425dc75ece47b9cf6fb626f47f1 Reviewed-on: https://go-review.googlesource.com/16857 Run-TryBot: Alex Brainman TryBot-Result: Gobot Gobot Reviewed-by: Alex Brainman --- diff --git a/src/path/filepath/path.go b/src/path/filepath/path.go index 7164c070bb..dd6f3e7a99 100644 --- a/src/path/filepath/path.go +++ b/src/path/filepath/path.go @@ -258,7 +258,7 @@ func Rel(basepath, targpath string) (string, error) { targVol := VolumeName(targpath) base := Clean(basepath) targ := Clean(targpath) - if targ == base { + if sameWord(targ, base) { return ".", nil } base = base[len(baseVol):] diff --git a/src/path/filepath/path_test.go b/src/path/filepath/path_test.go index 057aa6a2c0..e41a97da11 100644 --- a/src/path/filepath/path_test.go +++ b/src/path/filepath/path_test.go @@ -1034,6 +1034,8 @@ var winreltests = []RelTests{ {`C:\`, `D:\`, `err`}, {`C:`, `D:`, `err`}, {`C:\Projects`, `c:\projects\src`, `src`}, + {`C:\Projects`, `c:\projects`, `.`}, + {`C:\Projects\a\..`, `c:\projects`, `.`}, } func TestRel(t *testing.T) {