Skip to content

Commit 5719db9

Browse files
hashplinggitster
authored andcommitted
Change xdl_merge to generate output even for null merges
xdl_merge used to have a check to ensure that there was at least some change in one or other side being merged but this suppressed output for the degenerate case when base, local and remote contents were all identical. Removing this check enables correct output in the degenerate case and xdl_free_script handles freeing NULL scripts so there is no need to have the check for these calls. Signed-off-by: Charles Bailey <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 1cd1292 commit 5719db9

File tree

2 files changed

+16
-17
lines changed

2 files changed

+16
-17
lines changed

t/t6023-merge-file.sh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ deduxit me super semitas jusitiae,
5454
EOF
5555
printf "propter nomen suum." >> new4.txt
5656

57-
test_expect_failure 'merge with no changes' '
57+
test_expect_success 'merge with no changes' '
5858
cp orig.txt test.txt &&
5959
git merge-file test.txt orig.txt orig.txt &&
6060
test_cmp test.txt orig.txt

xdiff/xmerge.c

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -470,23 +470,22 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, const char *name1,
470470
return -1;
471471
}
472472
status = 0;
473-
if (xscr1 || xscr2) {
474-
if (!xscr1) {
475-
result->ptr = xdl_malloc(mf2->size);
476-
memcpy(result->ptr, mf2->ptr, mf2->size);
477-
result->size = mf2->size;
478-
} else if (!xscr2) {
479-
result->ptr = xdl_malloc(mf1->size);
480-
memcpy(result->ptr, mf1->ptr, mf1->size);
481-
result->size = mf1->size;
482-
} else {
483-
status = xdl_do_merge(&xe1, xscr1, name1,
484-
&xe2, xscr2, name2,
485-
level, xpp, result);
486-
}
487-
xdl_free_script(xscr1);
488-
xdl_free_script(xscr2);
473+
if (!xscr1) {
474+
result->ptr = xdl_malloc(mf2->size);
475+
memcpy(result->ptr, mf2->ptr, mf2->size);
476+
result->size = mf2->size;
477+
} else if (!xscr2) {
478+
result->ptr = xdl_malloc(mf1->size);
479+
memcpy(result->ptr, mf1->ptr, mf1->size);
480+
result->size = mf1->size;
481+
} else {
482+
status = xdl_do_merge(&xe1, xscr1, name1,
483+
&xe2, xscr2, name2,
484+
level, xpp, result);
489485
}
486+
xdl_free_script(xscr1);
487+
xdl_free_script(xscr2);
488+
490489
xdl_free_env(&xe1);
491490
xdl_free_env(&xe2);
492491

0 commit comments

Comments
 (0)