mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Prevent NPE in CommentMustAsDiff if no hunk header (#15199)
I do not understand how this can happen or why. There is an apparent possibility for a comment.Patch to be missing a hunk header - this should not happen and do not understand how. But it appears to happen on 1.13 at least in some case. This PR will simply add a new section if the cursection is empty thus preventing the NPE. Fix #15198 Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: Lauris BH <lauris@nix.lv> Co-authored-by: 6543 <6543@obermui.de> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
		| @@ -1014,6 +1014,11 @@ func parseHunks(curFile *DiffFile, maxLines, maxLineCharacters int, input *bufio | |||||||
| 			} | 			} | ||||||
| 			diffLine := &DiffLine{Type: DiffLineAdd, RightIdx: rightLine} | 			diffLine := &DiffLine{Type: DiffLineAdd, RightIdx: rightLine} | ||||||
| 			rightLine++ | 			rightLine++ | ||||||
|  | 			if curSection == nil { | ||||||
|  | 				// Create a new section to represent this hunk | ||||||
|  | 				curSection = &DiffSection{} | ||||||
|  | 				curFile.Sections = append(curFile.Sections, curSection) | ||||||
|  | 			} | ||||||
| 			curSection.Lines = append(curSection.Lines, diffLine) | 			curSection.Lines = append(curSection.Lines, diffLine) | ||||||
| 		case '-': | 		case '-': | ||||||
| 			curFileLinesCount++ | 			curFileLinesCount++ | ||||||
| @@ -1026,6 +1031,11 @@ func parseHunks(curFile *DiffFile, maxLines, maxLineCharacters int, input *bufio | |||||||
| 			if leftLine > 0 { | 			if leftLine > 0 { | ||||||
| 				leftLine++ | 				leftLine++ | ||||||
| 			} | 			} | ||||||
|  | 			if curSection == nil { | ||||||
|  | 				// Create a new section to represent this hunk | ||||||
|  | 				curSection = &DiffSection{} | ||||||
|  | 				curFile.Sections = append(curFile.Sections, curSection) | ||||||
|  | 			} | ||||||
| 			curSection.Lines = append(curSection.Lines, diffLine) | 			curSection.Lines = append(curSection.Lines, diffLine) | ||||||
| 		case ' ': | 		case ' ': | ||||||
| 			curFileLinesCount++ | 			curFileLinesCount++ | ||||||
| @@ -1036,6 +1046,11 @@ func parseHunks(curFile *DiffFile, maxLines, maxLineCharacters int, input *bufio | |||||||
| 			diffLine := &DiffLine{Type: DiffLinePlain, LeftIdx: leftLine, RightIdx: rightLine} | 			diffLine := &DiffLine{Type: DiffLinePlain, LeftIdx: leftLine, RightIdx: rightLine} | ||||||
| 			leftLine++ | 			leftLine++ | ||||||
| 			rightLine++ | 			rightLine++ | ||||||
|  | 			if curSection == nil { | ||||||
|  | 				// Create a new section to represent this hunk | ||||||
|  | 				curSection = &DiffSection{} | ||||||
|  | 				curFile.Sections = append(curFile.Sections, curSection) | ||||||
|  | 			} | ||||||
| 			curSection.Lines = append(curSection.Lines, diffLine) | 			curSection.Lines = append(curSection.Lines, diffLine) | ||||||
| 		default: | 		default: | ||||||
| 			// This is unexpected | 			// This is unexpected | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 zeripath
					zeripath