X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=diffcore-rename.c;h=e99269872026c7f08e729acb6ffba7ef3c9c8fd8;hb=110cb41cbf7b7cfefdc1f9fab521f165dd1d5d00;hp=b80b4320ff6ea586d8d3c2800a7c42d68ccdd796;hpb=514236aa5ab380cf7f585cb9195abdbb8080aac5;p=git.git diff --git a/diffcore-rename.c b/diffcore-rename.c index b80b4320..e9926987 100644 --- a/diffcore-rename.c +++ b/diffcore-rename.c @@ -133,7 +133,7 @@ static int estimate_similarity(struct diff_filespec *src, * match than anything else; the destination does not even * call into this function in that case. */ - unsigned long delta_size, base_size, src_copied, literal_added; + unsigned long max_size, delta_size, base_size, src_copied, literal_added; unsigned long delta_limit; int score; @@ -144,9 +144,9 @@ static int estimate_similarity(struct diff_filespec *src, if (!S_ISREG(src->mode) || !S_ISREG(dst->mode)) return 0; - delta_size = ((src->size < dst->size) ? - (dst->size - src->size) : (src->size - dst->size)); + max_size = ((src->size > dst->size) ? src->size : dst->size); base_size = ((src->size < dst->size) ? src->size : dst->size); + delta_size = max_size - base_size; /* We would not consider edits that change the file size so * drastically. delta_size must be smaller than @@ -174,12 +174,10 @@ static int estimate_similarity(struct diff_filespec *src, /* How similar are they? * what percentage of material in dst are from source? */ - if (dst->size < src_copied) - score = MAX_SCORE; - else if (!dst->size) + if (!dst->size) score = 0; /* should not happen */ else - score = src_copied * MAX_SCORE / dst->size; + score = src_copied * MAX_SCORE / max_size; return score; } @@ -307,8 +305,8 @@ void diffcore_rename(struct diff_options *options) m->score = estimate_similarity(one, two, minimum_score); } - free(two->cnt_data); - two->cnt_data = NULL; + /* We do not need the text anymore */ + diff_free_filespec_data(two); dst_cnt++; } /* cost matrix sorted by most to least similar pair */