diff options
-rw-r--r-- | src/cmd/gofmt/gofmt.go | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/cmd/gofmt/gofmt.go b/src/cmd/gofmt/gofmt.go index 4cf91336a3..467af87459 100644 --- a/src/cmd/gofmt/gofmt.go +++ b/src/cmd/gofmt/gofmt.go @@ -243,15 +243,17 @@ func diff(b1, b2 []byte) (data []byte, err error) { // implemented. func writeFile(filename string, data []byte, perm os.FileMode) error { // open temp file - f, err := ioutil.TempFile(filepath.Dir(filename), "tmp") + f, err := ioutil.TempFile(filepath.Dir(filename), "gofmt-") if err != nil { return err } + tmpname := f.Name() err = f.Chmod(perm) if err != nil { + f.Close() + os.Remove(tmpname) return err } - tmpname := f.Name() // write data to temp file n, err := f.Write(data) @@ -261,9 +263,12 @@ func writeFile(filename string, data []byte, perm os.FileMode) error { if err1 := f.Close(); err == nil { err = err1 } + if err == nil { + err = os.Rename(tmpname, filename) + } if err != nil { - return err + os.Remove(tmpname) } - return os.Rename(tmpname, filename) + return err } |