@@ -48,40 +48,39 @@ internal TreeChanges(DiffListSafeHandle diff)
4848 private int PrintCallBack ( IntPtr data , GitDiffDelta delta , GitDiffRange range , GitDiffLineOrigin lineorigin , IntPtr content , uint contentlen )
4949 {
5050 string formattedoutput = Utf8Marshaler . FromNative ( content , contentlen ) ;
51- FilePath currentFilePath = FilePathMarshaler . FromNative ( delta . NewFile . Path ) ;
5251
53- AddLineChange ( currentFilePath , lineorigin ) ;
52+ TreeEntryChanges currentChange = AddFileChange ( delta , lineorigin ) ;
53+ AddLineChange ( currentChange , lineorigin ) ;
5454
55- if ( lineorigin == GitDiffLineOrigin . GIT_DIFF_LINE_FILE_HDR )
56- {
57- AddFileChange ( delta ) ;
58- }
59-
60- changes [ currentFilePath ] . AppendToPatch ( formattedoutput ) ;
55+ currentChange . AppendToPatch ( formattedoutput ) ;
6156 fullPatchBuilder . Append ( formattedoutput ) ;
6257
6358 return 0 ;
6459 }
6560
66- private void AddLineChange ( FilePath currentFilePath , GitDiffLineOrigin lineOrigin )
61+ private void AddLineChange ( Changes currentChange , GitDiffLineOrigin lineOrigin )
6762 {
6863 switch ( lineOrigin )
6964 {
7065 case GitDiffLineOrigin . GIT_DIFF_LINE_ADDITION :
7166 linesAdded ++ ;
72- this [ currentFilePath ] . LinesAdded ++ ;
67+ currentChange . LinesAdded ++ ;
7368 break ;
7469
7570 case GitDiffLineOrigin . GIT_DIFF_LINE_DELETION :
7671 linesDeleted ++ ;
77- this [ currentFilePath ] . LinesDeleted ++ ;
72+ currentChange . LinesDeleted ++ ;
7873 break ;
7974 }
8075 }
8176
82- private void AddFileChange ( GitDiffDelta delta )
77+ private TreeEntryChanges AddFileChange ( GitDiffDelta delta , GitDiffLineOrigin lineorigin )
8378 {
8479 var newFilePath = FilePathMarshaler . FromNative ( delta . NewFile . Path ) ;
80+
81+ if ( lineorigin != GitDiffLineOrigin . GIT_DIFF_LINE_FILE_HDR )
82+ return this [ newFilePath ] ;
83+
8584 var oldFilePath = FilePathMarshaler . FromNative ( delta . OldFile . Path ) ;
8685 var newMode = ( Mode ) delta . NewFile . Mode ;
8786 var oldMode = ( Mode ) delta . OldFile . Mode ;
@@ -92,6 +91,7 @@ private void AddFileChange(GitDiffDelta delta)
9291
9392 fileDispatcher [ delta . Status ] ( this , diffFile ) ;
9493 changes . Add ( newFilePath , diffFile ) ;
94+ return diffFile ;
9595 }
9696
9797 #region IEnumerable<Tag> Members
0 commit comments