From a55395c9091fa95715e7feab20b0e7ad2e27c0d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Thomas=20Fr=C3=B6ssman?= Date: Tue, 10 Mar 2015 00:48:54 +0100 Subject: [PATCH] Fix windows panic on os.Rename when target file exists --- atomicfile.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/atomicfile.go b/atomicfile.go index 60cda2a..ab3f291 100644 --- a/atomicfile.go +++ b/atomicfile.go @@ -7,6 +7,7 @@ import ( "io/ioutil" "os" "path/filepath" + "runtime" ) // File behaves like os.File, but does an atomic rename operation at Close. @@ -34,6 +35,11 @@ func (f *File) Close() error { if err := f.File.Close(); err != nil { return err } + if runtime.GOOS == "windows" { + if err := os.Remove(f.path); err != nil { + return err + } + } if err := os.Rename(f.Name(), f.path); err != nil { return err }