diffcore-break: don't divide by zero
When the source file is empty, the calculation of the merge score
results in a division by zero. In the situation:
== preimage == == postimage ==
F (empty file) F (a large file)
E (a new empty file)
it does not make sense to consider F->E as a rename, so it is better not
to break the pre- and post-image of F.
Bail out early in this case to avoid hitting the divide-by-zero. This
causes the merge score to be left at zero.
Signed-off-by: John Keeping <john@keeping.me.uk>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
parent
15999998fb
commit
e7b00c5764
|
|
@ -68,6 +68,9 @@ static int should_break(struct diff_filespec *src,
|
|||
if (max_size < MINIMUM_BREAK_SIZE)
|
||||
return 0; /* we do not break too small filepair */
|
||||
|
||||
if (!src->size)
|
||||
return 0; /* we do not let empty files get renamed */
|
||||
|
||||
if (diffcore_count_changes(src, dst,
|
||||
&src->cnt_data, &dst->cnt_data,
|
||||
0,
|
||||
|
|
|
|||
Loading…
Reference in New Issue