diff options
Diffstat (limited to 'src/diff_output.c')
| -rw-r--r-- | src/diff_output.c | 38 | 
1 files changed, 20 insertions, 18 deletions
diff --git a/src/diff_output.c b/src/diff_output.c index dcff78871..933d44ee5 100644 --- a/src/diff_output.c +++ b/src/diff_output.c @@ -826,6 +826,9 @@ static int diff_patch_hunk_cb(  	hunk->line_start = patch->lines_size;  	hunk->line_count = 0; +	patch->oldno = range->old_start; +	patch->newno = range->new_start; +  	return 0;  } @@ -884,24 +887,23 @@ static int diff_patch_line_cb(  			++line->lines;  	} -	if (!last) { -		line->oldno = hunk->range.old_start; -		line->newno = hunk->range.new_start; -	} else { -		switch (last->origin) { -		case GIT_DIFF_LINE_ADDITION: -			line->oldno = last->oldno; -			line->newno = last->newno + last->lines; -			break; -		case GIT_DIFF_LINE_DELETION: -			line->oldno = last->oldno + last->lines; -			line->newno = last->newno; -			break; -		default: -			line->oldno = last->oldno + last->lines; -			line->newno = last->newno + last->lines; -			break; -		} +	switch (line_origin) { +	case GIT_DIFF_LINE_ADDITION: +		line->oldno = -1; +		line->newno = patch->newno; +		patch->newno += line->lines; +		break; +	case GIT_DIFF_LINE_DELETION: +		line->oldno = patch->oldno; +		line->newno = -1; +		patch->oldno += line->lines; +		break; +	default: +		line->oldno = patch->oldno; +		line->newno = patch->newno; +		patch->oldno += line->lines; +		patch->newno += line->lines; +		break;  	}  	hunk->line_count++;  | 
