diff --git a/diffcore-rename.c b/diffcore-rename.c
index 8fb45f0b8706baa6a1190b21d723d0b0d81203c5..6a52699f732c76540d71ce1500bd8d838ee8a265 100644 (file)
--- a/diffcore-rename.c
+++ b/diffcore-rename.c
*/
void *delta;
unsigned long delta_size, base_size, src_copied, literal_added;
+ unsigned long delta_limit;
int score;
/* We deal only with regular files. Symlink renames are handled
if (diff_populate_filespec(src, 0) || diff_populate_filespec(dst, 0))
return 0; /* error but caught downstream */
+ delta_limit = base_size * (MAX_SCORE-minimum_score) / MAX_SCORE;
delta = diff_delta(src->data, src->size,
dst->data, dst->size,
- &delta_size);
+ &delta_size, delta_limit);
+ if (!delta)
+ /* If delta_limit is exceeded, we have too much differences */
+ return 0;
/* A delta that has a lot of literal additions would have
* big delta_size no matter what else it does.