diff options
| author | Kartikaya Gupta <kats@pancake.staktrace.com> | 2021-04-13 13:20:34 -0400 |
|---|---|---|
| committer | Kartikaya Gupta <kats@pancake.staktrace.com> | 2021-05-12 20:42:19 -0400 |
| commit | 4c462bb6f3a5c9122a98cc921123ce6696edfa89 (patch) | |
| tree | c21fc46b706242eb9b9be6c4a44c45fac70169e1 /src/diff_tform.c | |
| parent | ff78aea6de84e04982b07fcf830555848a400815 (diff) | |
| download | libgit2-4c462bb6f3a5c9122a98cc921123ce6696edfa89.tar.gz | |
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.
Diffstat (limited to 'src/diff_tform.c')
| -rw-r--r-- | src/diff_tform.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/src/diff_tform.c b/src/diff_tform.c index 409142081..908175d34 100644 --- a/src/diff_tform.c +++ b/src/diff_tform.c @@ -1039,7 +1039,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 > @@ -1047,7 +1047,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 */ |
