Skip to content

Commit 9eb2a49

Browse files
author
helen
committed
atomicWriteFile: file defer close
Signed-off-by: helen <[email protected]>
1 parent 2a963a2 commit 9eb2a49

1 file changed

Lines changed: 11 additions & 5 deletions

File tree

ioutils.go

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,26 +37,32 @@ func atomicWriteFile(filename string, r io.Reader, dataSize int64, perm os.FileM
3737
if err != nil {
3838
return err
3939
}
40+
needClose := true
41+
defer func() {
42+
if needClose {
43+
f.Close()
44+
}
45+
}()
46+
4047
err = os.Chmod(f.Name(), perm)
4148
if err != nil {
42-
f.Close()
4349
return err
4450
}
4551
n, err := io.Copy(f, r)
4652
if err == nil && n < dataSize {
47-
f.Close()
4853
return io.ErrShortWrite
4954
}
5055
if err != nil {
51-
f.Close()
5256
return err
5357
}
54-
if err := f.Sync(); err != nil {
55-
f.Close()
58+
if err = f.Sync(); err != nil {
5659
return err
5760
}
61+
62+
needClose = false
5863
if err := f.Close(); err != nil {
5964
return err
6065
}
66+
6167
return os.Rename(f.Name(), filename)
6268
}

0 commit comments

Comments
 (0)