@@ -462,11 +462,12 @@ func walk(path string, info fs.FileInfo, walkFn WalkFunc) error {
462
462
//
463
463
// WalkDir does not follow symbolic links.
464
464
func WalkDir (root string , fn fs.WalkDirFunc ) error {
465
- info , err := os .Lstat (root )
465
+ cleanRootPath := Clean (root )
466
+ info , err := os .Lstat (cleanRootPath )
466
467
if err != nil {
467
- err = fn (root , nil , err )
468
+ err = fn (cleanRootPath , nil , err )
468
469
} else {
469
- err = walkDir (root , & statDirEntry {info }, fn )
470
+ err = walkDir (cleanRootPath , & statDirEntry {info }, fn )
470
471
}
471
472
if err == SkipDir {
472
473
return nil
@@ -498,11 +499,12 @@ func (d *statDirEntry) Info() (fs.FileInfo, error) { return d.info, nil }
498
499
// Walk is less efficient than WalkDir, introduced in Go 1.16,
499
500
// which avoids calling os.Lstat on every visited file or directory.
500
501
func Walk (root string , fn WalkFunc ) error {
501
- info , err := os .Lstat (root )
502
+ cleanRootPath := Clean (root )
503
+ info , err := os .Lstat (cleanRootPath )
502
504
if err != nil {
503
- err = fn (root , nil , err )
505
+ err = fn (cleanRootPath , nil , err )
504
506
} else {
505
- err = walk (root , info , fn )
507
+ err = walk (cleanRootPath , info , fn )
506
508
}
507
509
if err == SkipDir {
508
510
return nil
0 commit comments