diff options
Diffstat (limited to 'libgo/go/os/removeall_noat.go')
-rw-r--r-- | libgo/go/os/removeall_noat.go | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/libgo/go/os/removeall_noat.go b/libgo/go/os/removeall_noat.go index cf26bdb2161..fb9b45f7f1d 100644 --- a/libgo/go/os/removeall_noat.go +++ b/libgo/go/os/removeall_noat.go @@ -8,6 +8,7 @@ package os import ( "io" + "runtime" "syscall" ) @@ -124,10 +125,16 @@ func removeAll(path string) error { // Remove directory. err1 := Remove(path) - err1 = removeAllTestHook(err1) if err1 == nil || IsNotExist(err1) { return nil } + if runtime.GOOS == "windows" && IsPermission(err1) { + if fs, err := Stat(path); err == nil { + if err = Chmod(path, FileMode(0200|int(fs.Mode()))); err == nil { + err1 = Remove(path) + } + } + } if err == nil { err = err1 } |