mirror of
				https://github.com/go-gitea/gitea
				synced 2025-11-03 21:08:25 +00:00 
			
		
		
		
	#1790 fast return for too large diff
This commit is contained in:
		
							
								
								
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							@@ -17,7 +17,7 @@ import (
 | 
				
			|||||||
	"github.com/gogits/gogs/modules/setting"
 | 
						"github.com/gogits/gogs/modules/setting"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const APP_VER = "0.6.16.1015 Beta"
 | 
					const APP_VER = "0.6.16.1017 Beta"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func init() {
 | 
					func init() {
 | 
				
			||||||
	runtime.GOMAXPROCS(runtime.NumCPU())
 | 
						runtime.GOMAXPROCS(runtime.NumCPU())
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -86,7 +86,6 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 | 
				
			|||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		leftLine, rightLine int
 | 
							leftLine, rightLine int
 | 
				
			||||||
		isTooLong           bool
 | 
					 | 
				
			||||||
		// FIXME: Should use cache in the future.
 | 
							// FIXME: Should use cache in the future.
 | 
				
			||||||
		buf bytes.Buffer
 | 
							buf bytes.Buffer
 | 
				
			||||||
	)
 | 
						)
 | 
				
			||||||
@@ -107,9 +106,10 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 | 
				
			|||||||
		i = i + 1
 | 
							i = i + 1
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Diff data too large, we only show the first about maxlines lines
 | 
							// Diff data too large, we only show the first about maxlines lines
 | 
				
			||||||
		if i == maxlines {
 | 
							if i >= maxlines {
 | 
				
			||||||
			isTooLong = true
 | 
					 | 
				
			||||||
			log.Warn("Diff data too large")
 | 
								log.Warn("Diff data too large")
 | 
				
			||||||
 | 
								diff.Files = nil
 | 
				
			||||||
 | 
								return diff, nil
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		switch {
 | 
							switch {
 | 
				
			||||||
@@ -120,10 +120,6 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 | 
				
			|||||||
			curSection.Lines = append(curSection.Lines, diffLine)
 | 
								curSection.Lines = append(curSection.Lines, diffLine)
 | 
				
			||||||
			continue
 | 
								continue
 | 
				
			||||||
		case line[0] == '@':
 | 
							case line[0] == '@':
 | 
				
			||||||
			if isTooLong {
 | 
					 | 
				
			||||||
				break
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			curSection = &DiffSection{}
 | 
								curSection = &DiffSection{}
 | 
				
			||||||
			curFile.Sections = append(curFile.Sections, curSection)
 | 
								curFile.Sections = append(curFile.Sections, curSection)
 | 
				
			||||||
			ss := strings.Split(line, "@@")
 | 
								ss := strings.Split(line, "@@")
 | 
				
			||||||
@@ -162,10 +158,6 @@ func ParsePatch(pid int64, maxlines int, cmd *exec.Cmd, reader io.Reader) (*Diff
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
		// Get new file.
 | 
							// Get new file.
 | 
				
			||||||
		if strings.HasPrefix(line, DIFF_HEAD) {
 | 
							if strings.HasPrefix(line, DIFF_HEAD) {
 | 
				
			||||||
			if isTooLong {
 | 
					 | 
				
			||||||
				break
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
			beg := len(DIFF_HEAD)
 | 
								beg := len(DIFF_HEAD)
 | 
				
			||||||
			a := line[beg : (len(line)-beg)/2+beg]
 | 
								a := line[beg : (len(line)-beg)/2+beg]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1 +1 @@
 | 
				
			|||||||
0.6.16.1015 Beta
 | 
					0.6.16.1017 Beta
 | 
				
			||||||
		Reference in New Issue
	
	Block a user