tarFilterer: always flush after writing
Always call the nested TarWriter's Flush() method after writing file contents. Signed-off-by: Nalin Dahyabhai <nalin@redhat.com>
This commit is contained in:
parent
fce45b77d0
commit
7d5f1e1ca9
18
digester.go
18
digester.go
|
@ -61,7 +61,14 @@ type tarFilterer struct {
|
|||
}
|
||||
|
||||
func (t *tarFilterer) Write(p []byte) (int, error) {
|
||||
return t.pipeWriter.Write(p)
|
||||
n, err := t.pipeWriter.Write(p)
|
||||
if err != nil {
|
||||
t.closedLock.Lock()
|
||||
closed := t.closed
|
||||
t.closedLock.Unlock()
|
||||
err = fmt.Errorf("writing to tar filter pipe (closed=%v,err=%v): %w", closed, t.err, err)
|
||||
}
|
||||
return n, err
|
||||
}
|
||||
|
||||
func (t *tarFilterer) Close() error {
|
||||
|
@ -108,9 +115,8 @@ func newTarFilterer(writeCloser io.WriteCloser, filter func(hdr *tar.Header) (sk
|
|||
skip, replaceContents, replacementContents = filter(hdr)
|
||||
}
|
||||
if !skip {
|
||||
err = tarWriter.WriteHeader(hdr)
|
||||
if err != nil {
|
||||
err = fmt.Errorf("filtering tar header for %q: %w", hdr.Name, err)
|
||||
if err = tarWriter.WriteHeader(hdr); err != nil {
|
||||
err = fmt.Errorf("writing tar header for %q: %w", hdr.Name, err)
|
||||
break
|
||||
}
|
||||
if hdr.Size != 0 {
|
||||
|
@ -130,6 +136,10 @@ func newTarFilterer(writeCloser io.WriteCloser, filter func(hdr *tar.Header) (sk
|
|||
break
|
||||
}
|
||||
}
|
||||
if err = tarWriter.Flush(); err != nil {
|
||||
err = fmt.Errorf("flushing tar item padding for %q: %w", hdr.Name, err)
|
||||
break
|
||||
}
|
||||
}
|
||||
hdr, err = tarReader.Next()
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue