From: Ian Lance Taylor Date: Wed, 10 Nov 2010 21:25:49 +0000 (-0800) Subject: path: Fix Glob when it finds a file in directory position. X-Git-Tag: weekly.2010-11-10~1 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=be0b649eb1efcf2c0f86e823c364322b7561ad5e;p=gostls13.git path: Fix Glob when it finds a file in directory position. When searching a list of directories, the files which match the pattern are accumulated in a slice. If the glob has a wildcard for the directory, and the wildcard matches a file rather than a directory, then the files found so far are discarded. E.g., path.Glob("*/x") in a directory which contains both files and subdirectories. This patch avoids discarding matches found so far when a file is found. R=r CC=bsiegert, golang-dev https://golang.org/cl/3015042 --- diff --git a/src/pkg/path/match.go b/src/pkg/path/match.go index d5cd19fd40..dd3422c425 100644 --- a/src/pkg/path/match.go +++ b/src/pkg/path/match.go @@ -240,9 +240,13 @@ func Glob(pattern string) (matches []string) { // glob searches for files matching pattern in the directory dir // and appends them to matches. func glob(dir, pattern string, matches []string) []string { - if fi, err := os.Stat(dir); err != nil || !fi.IsDirectory() { + fi, err := os.Stat(dir) + if err != nil { return nil } + if !fi.IsDirectory() { + return matches + } d, err := os.Open(dir, os.O_RDONLY, 0666) if err != nil { return nil