mirror of
https://github.com/golang/go
synced 2024-09-05 16:04:50 +00:00
io/fs: implement subFS.Sub
Calling fs.Sub with the result of fs.Sub multiple times creates a deep call stack for Open and other methods. Enhance the fs.FS returned by fs.Sub to implement fs.SubFS and reduce the call stack. Fixes #45349 Change-Id: I10e10501e030176e10e2ae5ad260212e5c784bed Reviewed-on: https://go-review.googlesource.com/c/go/+/306769 Run-TryBot: Ian Lance Taylor <iant@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org> Trust: Emmanuel Odeke <emmanuel@orijtech.com>
This commit is contained in:
parent
6986c02d72
commit
971c7154b0
|
@ -125,3 +125,14 @@ func (f *subFS) Glob(pattern string) ([]string, error) {
|
|||
}
|
||||
return list, f.fixErr(err)
|
||||
}
|
||||
|
||||
func (f *subFS) Sub(dir string) (FS, error) {
|
||||
if dir == "." {
|
||||
return f, nil
|
||||
}
|
||||
full, err := f.fullName("sub", dir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &subFS{f.fsys, full}, nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue