mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-27 02:10:40 +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:
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}
|
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
|
||||||
|
|
Loading…
Reference in a new issue