Skip to content

Commit 10f588d

Browse files
authored
Defer statements could possibly void stored error values (#798)
1 parent d5a5746 commit 10f588d

5 files changed

Lines changed: 11 additions & 7 deletions

File tree

cmd/backup/archive.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package main
88

99
import (
1010
"archive/tar"
11+
"errors"
1112
"fmt"
1213
"io"
1314
"os"
@@ -164,7 +165,7 @@ func writeTarball(path string, tarWriter *tar.Writer, prefix string) (returnErr
164165
return
165166
}
166167
defer func() {
167-
returnErr = file.Close()
168+
returnErr = errors.Join(returnErr, file.Close())
168169
}()
169170

170171
_, err = io.Copy(tarWriter, file)

internal/storage/dropbox/dropbox.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package dropbox
33
import (
44
"bytes"
55
"context"
6+
"errors"
67
"fmt"
78
"net/url"
89
"os"
@@ -111,7 +112,7 @@ func (b *dropboxStorage) Copy(file string) (returnErr error) {
111112
return
112113
}
113114
defer func() {
114-
returnErr = r.Close()
115+
returnErr = errors.Join(returnErr, r.Close())
115116
}()
116117

117118
// Start new upload session and get session id

internal/storage/googledrive/googledrive.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package googledrive
55

66
import (
77
"context"
8+
"errors"
89
"fmt"
910
"os"
1011
"path/filepath"
@@ -97,7 +98,7 @@ func (b *googleDriveStorage) Copy(file string) (returnErr error) {
9798
return
9899
}
99100
defer func() {
100-
returnErr = f.Close()
101+
returnErr = errors.Join(returnErr, f.Close())
101102
}()
102103

103104
driveFile := &drive.File{Name: name}

internal/storage/local/local.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ func copyFile(src, dst string) (returnErr error) {
155155
return
156156
}
157157
defer func() {
158-
returnErr = in.Close()
158+
returnErr = errors.Join(returnErr, in.Close())
159159
}()
160160

161161
out, err := os.Create(dst)

internal/storage/ssh/ssh.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,8 @@ func (b *sshStorage) Name() string {
110110
// Copy copies the given file to the SSH storage backend.
111111
func (b *sshStorage) Copy(file string) (returnErr error) {
112112
if err := b.sftpClient.MkdirAll(b.DestinationPath); err != nil {
113-
return errwrap.Wrap(err, "error ensuring destination directory")
113+
returnErr = errwrap.Wrap(err, "error ensuring destination directory")
114+
return
114115
}
115116

116117
source, err := os.Open(file)
@@ -120,7 +121,7 @@ func (b *sshStorage) Copy(file string) (returnErr error) {
120121
return
121122
}
122123
defer func() {
123-
returnErr = source.Close()
124+
returnErr = errors.Join(returnErr, source.Close())
124125
}()
125126

126127
destination, err := b.sftpClient.Create(path.Join(b.DestinationPath, name))
@@ -129,7 +130,7 @@ func (b *sshStorage) Copy(file string) (returnErr error) {
129130
return
130131
}
131132
defer func() {
132-
returnErr = destination.Close()
133+
returnErr = errors.Join(returnErr, destination.Close())
133134
}()
134135

135136
chunk := make([]byte, 1e9)

0 commit comments

Comments
 (0)