Fix git.Blob.DataAsync(): close pipe since we return a NopCloser (#16899)

* make sure headGitRepo is closed on err too

* refactor

* Fix git.Blob.DataAsync(): exec cancel since we already read all bytes (close pipe since we return a NopCloser)
This commit is contained in:
6543 2021-08-31 09:43:31 +02:00 committed by GitHub
parent bb4cc876b1
commit d21702475b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 7 additions and 9 deletions

View file

@ -47,8 +47,8 @@ func (b *Blob) DataAsync() (io.ReadCloser, error) {
if size < 4096 {
bs, err := ioutil.ReadAll(io.LimitReader(rd, size))
defer cancel()
if err != nil {
cancel()
return nil, err
}
_, err = rd.Discard(1)
@ -106,12 +106,12 @@ func (b *blobReader) Read(p []byte) (n int, err error) {
// Close implements io.Closer
func (b *blobReader) Close() error {
defer b.cancel()
if b.n > 0 {
for b.n > math.MaxInt32 {
n, err := b.rd.Discard(math.MaxInt32)
b.n -= int64(n)
if err != nil {
b.cancel()
return err
}
b.n -= math.MaxInt32
@ -119,14 +119,12 @@ func (b *blobReader) Close() error {
n, err := b.rd.Discard(int(b.n))
b.n -= int64(n)
if err != nil {
b.cancel()
return err
}
}
if b.n == 0 {
_, err := b.rd.Discard(1)
b.n--
b.cancel()
return err
}
return nil