Skip to content

Commit

Permalink
Change xdl_merge to generate output even for null merges
Browse files Browse the repository at this point in the history
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 <charles@hashpling.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Charles Bailey authored and Junio C Hamano committed May 25, 2009
1 parent 1cd1292 commit 5719db9
Show file tree
Hide file tree
Showing 2 changed files with 16 additions and 17 deletions.
2 changes: 1 addition & 1 deletion t/t6023-merge-file.sh
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ deduxit me super semitas jusitiae,
EOF
printf "propter nomen suum." >> new4.txt

test_expect_failure 'merge with no changes' '
test_expect_success 'merge with no changes' '
cp orig.txt test.txt &&
git merge-file test.txt orig.txt orig.txt &&
test_cmp test.txt orig.txt
Expand Down
31 changes: 15 additions & 16 deletions xdiff/xmerge.c
Original file line number Diff line number Diff line change
Expand Up @@ -470,23 +470,22 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, const char *name1,
return -1;
}
status = 0;
if (xscr1 || xscr2) {
if (!xscr1) {
result->ptr = xdl_malloc(mf2->size);
memcpy(result->ptr, mf2->ptr, mf2->size);
result->size = mf2->size;
} else if (!xscr2) {
result->ptr = xdl_malloc(mf1->size);
memcpy(result->ptr, mf1->ptr, mf1->size);
result->size = mf1->size;
} else {
status = xdl_do_merge(&xe1, xscr1, name1,
&xe2, xscr2, name2,
level, xpp, result);
}
xdl_free_script(xscr1);
xdl_free_script(xscr2);
if (!xscr1) {
result->ptr = xdl_malloc(mf2->size);
memcpy(result->ptr, mf2->ptr, mf2->size);
result->size = mf2->size;
} else if (!xscr2) {
result->ptr = xdl_malloc(mf1->size);
memcpy(result->ptr, mf1->ptr, mf1->size);
result->size = mf1->size;
} else {
status = xdl_do_merge(&xe1, xscr1, name1,
&xe2, xscr2, name2,
level, xpp, result);
}
xdl_free_script(xscr1);
xdl_free_script(xscr2);

xdl_free_env(&xe1);
xdl_free_env(&xe2);

Expand Down

0 comments on commit 5719db9

Please sign in to comment.