Skip to content

Commit 456cb4c

Browse files
committed
Merge branch 'cb/maint-1.6.0-xdl-merge-fix' into maint
* cb/maint-1.6.0-xdl-merge-fix: Change xdl_merge to generate output even for null merges t6023: merge-file fails to output anything for a degenerate merge Conflicts: xdiff/xmerge.c
2 parents 3489428 + 5719db9 commit 456cb4c

File tree

2 files changed

+21
-16
lines changed

2 files changed

+21
-16
lines changed

t/t6023-merge-file.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,12 @@ deduxit me super semitas jusitiae,
5454
EOF
5555
printf "propter nomen suum." >> new4.txt
5656

57+
test_expect_success 'merge with no changes' '
58+
cp orig.txt test.txt &&
59+
git merge-file test.txt orig.txt orig.txt &&
60+
test_cmp test.txt orig.txt
61+
'
62+
5763
cp new1.txt test.txt
5864
test_expect_success "merge without conflict" \
5965
"git merge-file test.txt orig.txt new2.txt"

xdiff/xmerge.c

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -563,23 +563,22 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, const char *name1,
563563
return -1;
564564
}
565565
status = 0;
566-
if (xscr1 || xscr2) {
567-
if (!xscr1) {
568-
result->ptr = xdl_malloc(mf2->size);
569-
memcpy(result->ptr, mf2->ptr, mf2->size);
570-
result->size = mf2->size;
571-
} else if (!xscr2) {
572-
result->ptr = xdl_malloc(mf1->size);
573-
memcpy(result->ptr, mf1->ptr, mf1->size);
574-
result->size = mf1->size;
575-
} else {
576-
status = xdl_do_merge(&xe1, xscr1, name1,
577-
&xe2, xscr2, name2,
578-
flags, xpp, result);
579-
}
580-
xdl_free_script(xscr1);
581-
xdl_free_script(xscr2);
566+
if (!xscr1) {
567+
result->ptr = xdl_malloc(mf2->size);
568+
memcpy(result->ptr, mf2->ptr, mf2->size);
569+
result->size = mf2->size;
570+
} else if (!xscr2) {
571+
result->ptr = xdl_malloc(mf1->size);
572+
memcpy(result->ptr, mf1->ptr, mf1->size);
573+
result->size = mf1->size;
574+
} else {
575+
status = xdl_do_merge(&xe1, xscr1, name1,
576+
&xe2, xscr2, name2,
577+
flags, xpp, result);
582578
}
579+
xdl_free_script(xscr1);
580+
xdl_free_script(xscr2);
581+
583582
xdl_free_env(&xe1);
584583
xdl_free_env(&xe2);
585584

0 commit comments

Comments
 (0)