Backport #16950 The lastLeftIdx should be reset at the same time as creating a new section otherwise it is possible for a second addition to end up attempting to read a nil entry. Fix #16943 Signed-off-by: Andrew Thornton <art27@cantab.net>
This commit is contained in:
		
							parent
							
								
									67ceb61fe3
								
							
						
					
					
						commit
						a384109244
					
				
					 1 changed files with 4 additions and 0 deletions
				
			
		|  | @ -996,6 +996,7 @@ func parseHunks(curFile *DiffFile, maxLines, maxLineCharacters int, input *bufio | ||||||
| 
 | 
 | ||||||
| 			// Create a new section to represent this hunk
 | 			// Create a new section to represent this hunk
 | ||||||
| 			curSection = &DiffSection{} | 			curSection = &DiffSection{} | ||||||
|  | 			lastLeftIdx = -1 | ||||||
| 			curFile.Sections = append(curFile.Sections, curSection) | 			curFile.Sections = append(curFile.Sections, curSection) | ||||||
| 
 | 
 | ||||||
| 			lineSectionInfo := getDiffLineSectionInfo(curFile.Name, line, leftLine-1, rightLine-1) | 			lineSectionInfo := getDiffLineSectionInfo(curFile.Name, line, leftLine-1, rightLine-1) | ||||||
|  | @ -1036,6 +1037,7 @@ func parseHunks(curFile *DiffFile, maxLines, maxLineCharacters int, input *bufio | ||||||
| 				// Create a new section to represent this hunk
 | 				// Create a new section to represent this hunk
 | ||||||
| 				curSection = &DiffSection{} | 				curSection = &DiffSection{} | ||||||
| 				curFile.Sections = append(curFile.Sections, curSection) | 				curFile.Sections = append(curFile.Sections, curSection) | ||||||
|  | 				lastLeftIdx = -1 | ||||||
| 			} | 			} | ||||||
| 			if lastLeftIdx > -1 { | 			if lastLeftIdx > -1 { | ||||||
| 				diffLine.Match = lastLeftIdx | 				diffLine.Match = lastLeftIdx | ||||||
|  | @ -1061,6 +1063,7 @@ func parseHunks(curFile *DiffFile, maxLines, maxLineCharacters int, input *bufio | ||||||
| 				// Create a new section to represent this hunk
 | 				// Create a new section to represent this hunk
 | ||||||
| 				curSection = &DiffSection{} | 				curSection = &DiffSection{} | ||||||
| 				curFile.Sections = append(curFile.Sections, curSection) | 				curFile.Sections = append(curFile.Sections, curSection) | ||||||
|  | 				lastLeftIdx = -1 | ||||||
| 			} | 			} | ||||||
| 			if len(curSection.Lines) == 0 || curSection.Lines[len(curSection.Lines)-1].Type != DiffLineDel { | 			if len(curSection.Lines) == 0 || curSection.Lines[len(curSection.Lines)-1].Type != DiffLineDel { | ||||||
| 				lastLeftIdx = len(curSection.Lines) | 				lastLeftIdx = len(curSection.Lines) | ||||||
|  | @ -1121,6 +1124,7 @@ func parseHunks(curFile *DiffFile, maxLines, maxLineCharacters int, input *bufio | ||||||
| 					curFile.IsBin = true | 					curFile.IsBin = true | ||||||
| 					curFile.IsLFSFile = true | 					curFile.IsLFSFile = true | ||||||
| 					curSection.Lines = nil | 					curSection.Lines = nil | ||||||
|  | 					lastLeftIdx = -1 | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue