From: Joe Tsai Date: Thu, 1 Oct 2015 10:08:18 +0000 (-0700) Subject: archive/tar: make Reader.Read errors persistent X-Git-Tag: go1.6beta1~937 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=02d2db18a79ad2b143fe6501dba22feae5260778;p=gostls13.git archive/tar: make Reader.Read errors persistent 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 Run-TryBot: Brad Fitzpatrick --- diff --git a/src/archive/tar/reader.go b/src/archive/tar/reader.go index e9a6aa350a..67db71540c 100644 --- a/src/archive/tar/reader.go +++ b/src/archive/tar/reader.go @@ -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