mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Fix diff expansion is missing final line in a file (#16222)
* Fixed down offset. * Fixed wrong line count result.
This commit is contained in:
		@@ -34,7 +34,7 @@ func (b *Blob) GetBlobContent() (string, error) {
 | 
				
			|||||||
	return string(buf), nil
 | 
						return string(buf), nil
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// GetBlobLineCount gets line count of lob as raw text
 | 
					// GetBlobLineCount gets line count of the blob
 | 
				
			||||||
func (b *Blob) GetBlobLineCount() (int, error) {
 | 
					func (b *Blob) GetBlobLineCount() (int, error) {
 | 
				
			||||||
	reader, err := b.DataAsync()
 | 
						reader, err := b.DataAsync()
 | 
				
			||||||
	if err != nil {
 | 
						if err != nil {
 | 
				
			||||||
@@ -42,10 +42,14 @@ func (b *Blob) GetBlobLineCount() (int, error) {
 | 
				
			|||||||
	}
 | 
						}
 | 
				
			||||||
	defer reader.Close()
 | 
						defer reader.Close()
 | 
				
			||||||
	buf := make([]byte, 32*1024)
 | 
						buf := make([]byte, 32*1024)
 | 
				
			||||||
	count := 0
 | 
						count := 1
 | 
				
			||||||
	lineSep := []byte{'\n'}
 | 
						lineSep := []byte{'\n'}
 | 
				
			||||||
	for {
 | 
					
 | 
				
			||||||
	c, err := reader.Read(buf)
 | 
						c, err := reader.Read(buf)
 | 
				
			||||||
 | 
						if c == 0 && err == io.EOF {
 | 
				
			||||||
 | 
							return 0, nil
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						for {
 | 
				
			||||||
		count += bytes.Count(buf[:c], lineSep)
 | 
							count += bytes.Count(buf[:c], lineSep)
 | 
				
			||||||
		switch {
 | 
							switch {
 | 
				
			||||||
		case err == io.EOF:
 | 
							case err == io.EOF:
 | 
				
			||||||
@@ -53,6 +57,7 @@ func (b *Blob) GetBlobLineCount() (int, error) {
 | 
				
			|||||||
		case err != nil:
 | 
							case err != nil:
 | 
				
			||||||
			return count, err
 | 
								return count, err
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
							c, err = reader.Read(buf)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -714,7 +714,11 @@ func ExcerptBlob(ctx *context.Context) {
 | 
				
			|||||||
		lastLeft += chunkSize
 | 
							lastLeft += chunkSize
 | 
				
			||||||
		lastRight += chunkSize
 | 
							lastRight += chunkSize
 | 
				
			||||||
	} else {
 | 
						} else {
 | 
				
			||||||
		section.Lines, err = getExcerptLines(commit, filePath, lastLeft, lastRight, idxRight-lastRight-1)
 | 
							offset := -1
 | 
				
			||||||
 | 
							if direction == "down" {
 | 
				
			||||||
 | 
								offset = 0
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							section.Lines, err = getExcerptLines(commit, filePath, lastLeft, lastRight, idxRight-lastRight+offset)
 | 
				
			||||||
		leftHunkSize = 0
 | 
							leftHunkSize = 0
 | 
				
			||||||
		rightHunkSize = 0
 | 
							rightHunkSize = 0
 | 
				
			||||||
		idxLeft = lastLeft
 | 
							idxLeft = lastLeft
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user