summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2005-12-13 01:15:55 (GMT)
committerJunio C Hamano <junkio@cox.net>2005-12-13 01:15:55 (GMT)
commit0532a5e46b88cd70c952a2bf5dc63681be32a2d9 (patch)
treecbdc2ee7f6b154a1b2b3aa6025ffd2e781845ae9
parent86c9523305f75818d4dce485a18f6b4ccae78233 (diff)
downloadgit-0532a5e46b88cd70c952a2bf5dc63681be32a2d9.zip
git-0532a5e46b88cd70c952a2bf5dc63681be32a2d9.tar.gz
git-0532a5e46b88cd70c952a2bf5dc63681be32a2d9.tar.bz2
diffcore-break: do not break too small filepair.
Somehow we checked only one side and not the other. By checking the filesize upfront, we can bypass generating delta unnecessarily. Signed-off-by: Junio C Hamano <junkio@cox.net>
-rw-r--r--diffcore-break.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/diffcore-break.c b/diffcore-break.c
index e6a468e..c57513a 100644
--- a/diffcore-break.c
+++ b/diffcore-break.c
@@ -62,6 +62,8 @@ static int should_break(struct diff_filespec *src,
return 0; /* error but caught downstream */
base_size = ((src->size < dst->size) ? src->size : dst->size);
+ if (base_size < MINIMUM_BREAK_SIZE)
+ return 0; /* we do not break too small filepair */
delta = diff_delta(src->data, src->size,
dst->data, dst->size,
@@ -170,8 +172,7 @@ void diffcore_break(int break_score)
!S_ISDIR(p->one->mode) && !S_ISDIR(p->two->mode) &&
!strcmp(p->one->path, p->two->path)) {
if (should_break(p->one, p->two,
- break_score, &score) &&
- MINIMUM_BREAK_SIZE <= p->one->size) {
+ break_score, &score)) {
/* Split this into delete and create */
struct diff_filespec *null_one, *null_two;
struct diff_filepair *dp;