From 9a7cd11bc8f1763710a18bd90e9db00f8281d69b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20M=C3=A9zard?= Date: Wed, 5 Mar 2014 12:19:56 +1100 Subject: [PATCH] os: try openFile before openDir in windows os.OpenFile Logging calls when running "go install -a std" turns: 547 openDir succeeded 3593 openDir failed and fell back to openFile 3592 openFile succeeded 1 both failed into: 3592 openFile succeeded 548 openFile failed and fell back 547 openDir succeeded 1 both failed Here the change trades 3593 failed openDir for 548 failed openFile. Fix issue 7426. LGTM=alex.brainman R=golang-codereviews, alex.brainman, bradfitz CC=golang-codereviews https://golang.org/cl/70480044 --- src/pkg/os/file_windows.go | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/pkg/os/file_windows.go b/src/pkg/os/file_windows.go index fab7de3428..efe8bc03fc 100644 --- a/src/pkg/os/file_windows.go +++ b/src/pkg/os/file_windows.go @@ -134,20 +134,19 @@ func OpenFile(name string, flag int, perm FileMode) (file *File, err error) { if name == "" { return nil, &PathError{"open", name, syscall.ENOENT} } - // TODO(brainman): not sure about my logic of assuming it is dir first, then fall back to file - r, e := openDir(name) - if e == nil { + r, errf := openFile(name, flag, perm) + if errf == nil { + return r, nil + } + r, errd := openDir(name) + if errd == nil { if flag&O_WRONLY != 0 || flag&O_RDWR != 0 { r.Close() return nil, &PathError{"open", name, syscall.EISDIR} } return r, nil } - r, e = openFile(name, flag, perm) - if e == nil { - return r, nil - } - return nil, &PathError{"open", name, e} + return nil, &PathError{"open", name, errf} } // Close closes the File, rendering it unusable for I/O.