mirror of
https://github.com/libgit2/libgit2.git
synced 2026-06-22 06:26:26 +00:00
diff: Fix bug in git_diff_find_similar.
When a split src gets turned into a rename, it should also lose the IS_RENAME_TARGET flag, so that it doesn't get processed in a subsequent iteration as a rename target. Doing so can cause an assertion failure because it no longer has the SPLIT flag. Fixes #5811.
This commit is contained in:
committed by
Edward Thomson
parent
168cc6d02d
commit
99ba19c45d
@@ -1038,7 +1038,7 @@ find_best_matches:
|
||||
memcpy(&src->old_file, &swap, sizeof(src->old_file));
|
||||
|
||||
/* if we've just swapped the new element into the correct
|
||||
* place, clear the SPLIT flag
|
||||
* place, clear the SPLIT and RENAME_TARGET flags
|
||||
*/
|
||||
if (tgt2src[s].idx == t &&
|
||||
tgt2src[s].similarity >
|
||||
@@ -1046,7 +1046,7 @@ find_best_matches:
|
||||
src->status = GIT_DELTA_RENAMED;
|
||||
src->similarity = tgt2src[s].similarity;
|
||||
tgt2src[s].similarity = 0;
|
||||
src->flags &= ~GIT_DIFF_FLAG__TO_SPLIT;
|
||||
src->flags &= ~(GIT_DIFF_FLAG__TO_SPLIT | GIT_DIFF_FLAG__IS_RENAME_TARGET);
|
||||
num_rewrites--;
|
||||
}
|
||||
/* otherwise, if we just overwrote a source, update mapping */
|
||||
|
||||
Reference in New Issue
Block a user