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:
		
					parent
					
						
							
								ff460ca74d
							
						
					
				
			
			
				commit
				
					
						a351b22dc0
					
				
			
		
					 1 changed files with 15 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -1014,6 +1014,11 @@ func parseHunks(curFile *DiffFile, maxLines, maxLineCharacters int, input *bufio
 | 
			
		|||
			}
 | 
			
		||||
			diffLine := &DiffLine{Type: DiffLineAdd, RightIdx: 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)
 | 
			
		||||
		case '-':
 | 
			
		||||
			curFileLinesCount++
 | 
			
		||||
| 
						 | 
				
			
			@ -1026,6 +1031,11 @@ func parseHunks(curFile *DiffFile, maxLines, maxLineCharacters int, input *bufio
 | 
			
		|||
			if leftLine > 0 {
 | 
			
		||||
				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)
 | 
			
		||||
		case ' ':
 | 
			
		||||
			curFileLinesCount++
 | 
			
		||||
| 
						 | 
				
			
			@ -1036,6 +1046,11 @@ func parseHunks(curFile *DiffFile, maxLines, maxLineCharacters int, input *bufio
 | 
			
		|||
			diffLine := &DiffLine{Type: DiffLinePlain, LeftIdx: leftLine, RightIdx: rightLine}
 | 
			
		||||
			leftLine++
 | 
			
		||||
			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)
 | 
			
		||||
		default:
 | 
			
		||||
			// This is unexpected
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue