From: John Keeping Date: Wed, 3 Apr 2013 19:24:05 +0000 (+0100) Subject: diffcore-break: don't divide by zero X-Git-Tag: v1.8.2.2~39^2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=e7b00c57640fa2bf11e4218b588f51cc5a9a754e;p=thirdparty%2Fgit.git 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 Signed-off-by: Junio C Hamano --- diff --git a/diffcore-break.c b/diffcore-break.c index 44f8678d22..1d9e530a84 100644 --- a/diffcore-break.c +++ b/diffcore-break.c @@ -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,