mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	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:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user