Skip to content

Commit

Permalink
archive/tar: make Reader.Read errors persistent
Browse files Browse the repository at this point in the history
If the stream is in an inconsistent state, it does not make sense
that Reader.Read can be called and possibly succeed.

Change-Id: I9d1c5a1300b2c2b45232188aa7999e350809dcf2
Reviewed-on: https://go-review.googlesource.com/15177
Reviewed-by: Brad Fitzpatrick <[email protected]>
Run-TryBot: Brad Fitzpatrick <[email protected]>
  • Loading branch information
dsnet authored and bradfitz committed Oct 1, 2015
1 parent d96a3a2 commit 02d2db1
Showing 1 changed file with 4 additions and 0 deletions.
4 changes: 4 additions & 0 deletions src/archive/tar/reader.go
Original file line number Diff line number Diff line change
Expand Up @@ -763,9 +763,13 @@ func (tr *Reader) numBytes() int64 {
// It returns 0, io.EOF when it reaches the end of that entry,
// until Next is called to advance to the next entry.
func (tr *Reader) Read(b []byte) (n int, err error) {
if tr.err != nil {
return 0, tr.err
}
if tr.curr == nil {
return 0, io.EOF
}

n, err = tr.curr.Read(b)
if err != nil && err != io.EOF {
tr.err = err
Expand Down

0 comments on commit 02d2db1

Please sign in to comment.