From c2ff7150aa835f5094b14c246d096090d0b6ec0b Mon Sep 17 00:00:00 2001 From: Emil Hessman Date: Sun, 13 Aug 2017 19:07:23 +0200 Subject: [PATCH] internal: check error before deferring file Close() If there is an error, file will be `nil`. We should check the returned error before deferring file `Close()`. --- internal/archiver/archiver.go | 2 +- internal/restic/node.go | 3 +-- internal/test/helpers.go | 2 +- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/internal/archiver/archiver.go b/internal/archiver/archiver.go index 0ed66c07f..dd7bea06f 100644 --- a/internal/archiver/archiver.go +++ b/internal/archiver/archiver.go @@ -210,10 +210,10 @@ func updateNodeContent(node *restic.Node, results []saveResult) error { // Save for each chunk. func (arch *Archiver) SaveFile(ctx context.Context, p *restic.Progress, node *restic.Node) (*restic.Node, error) { file, err := fs.Open(node.Path) - defer file.Close() if err != nil { return node, errors.Wrap(err, "Open") } + defer file.Close() debug.RunHook("archiver.SaveFile", node.Path) diff --git a/internal/restic/node.go b/internal/restic/node.go index 9b3f5591b..e5970cdb4 100644 --- a/internal/restic/node.go +++ b/internal/restic/node.go @@ -243,11 +243,10 @@ func (node Node) createFileAt(ctx context.Context, path string, repo Repository, } f, err := fs.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_TRUNC, 0600) - defer f.Close() - if err != nil { return errors.Wrap(err, "OpenFile") } + defer f.Close() var buf []byte for _, id := range node.Content { diff --git a/internal/test/helpers.go b/internal/test/helpers.go index 2f476995b..785189598 100644 --- a/internal/test/helpers.go +++ b/internal/test/helpers.go @@ -94,8 +94,8 @@ func Random(seed, count int) []byte { // SetupTarTestFixture extracts the tarFile to outputDir. func SetupTarTestFixture(t testing.TB, outputDir, tarFile string) { input, err := os.Open(tarFile) - defer input.Close() OK(t, err) + defer input.Close() var rd io.Reader switch filepath.Ext(tarFile) {