diff --git a/internal/archive/archive.go b/internal/archive/archive.go index d76b779..e15cff7 100644 --- a/internal/archive/archive.go +++ b/internal/archive/archive.go @@ -279,13 +279,21 @@ func (archive *Archive) addFile(source string, dest string) error { return nil } -func (archive *Archive) writeCompressed(path string, mode os.FileMode) error { +func (archive *Archive) writeCompressed(path string, mode os.FileMode) (err error) { + + var compressor io.WriteCloser + defer func() { + e := compressor.Close() + if e != nil && err == nil { + err = e + } + }() + fd, err := os.Create(path) if err != nil { return err } - - var compressor io.WriteCloser + // Note: fd.Close omitted since it'll be closed in "compressor" switch archive.compress_format { case FormatGzip: @@ -326,10 +334,6 @@ func (archive *Archive) writeCompressed(path string, mode os.FileMode) error { return err } - if err := compressor.Close(); err != nil { - return err - } - // call fsync just to be sure if err := fd.Sync(); err != nil { return err