Skip to content

Commit 53a7085

Browse files
author
Junio C Hamano
committed
xmerge: make return value from xdl_merge() more usable.
The callers would want to know if the resulting merge is clean; do not discard that information away after calling xdl_do_merge(). Signed-off-by: Junio C Hamano <junkio@cox.net>
1 parent 857b933 commit 53a7085

File tree

1 file changed

+7
-10
lines changed

1 file changed

+7
-10
lines changed

xdiff/xmerge.c

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,7 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, const char *name1,
384384
xpparam_t const *xpp, int level, mmbuffer_t *result) {
385385
xdchange_t *xscr1, *xscr2;
386386
xdfenv_t xe1, xe2;
387+
int status;
387388

388389
result->ptr = NULL;
389390
result->size = 0;
@@ -404,6 +405,7 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, const char *name1,
404405
xdl_free_env(&xe2);
405406
return -1;
406407
}
408+
status = 0;
407409
if (xscr1 || xscr2) {
408410
if (!xscr1) {
409411
result->ptr = xdl_malloc(mf2->size);
@@ -413,21 +415,16 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, const char *name1,
413415
result->ptr = xdl_malloc(mf1->size);
414416
memcpy(result->ptr, mf1->ptr, mf1->size);
415417
result->size = mf1->size;
416-
} else if (xdl_do_merge(&xe1, xscr1, name1,
417-
&xe2, xscr2, name2,
418-
level, xpp, result) < 0) {
419-
xdl_free_script(xscr1);
420-
xdl_free_script(xscr2);
421-
xdl_free_env(&xe1);
422-
xdl_free_env(&xe2);
423-
return -1;
418+
} else {
419+
status = xdl_do_merge(&xe1, xscr1, name1,
420+
&xe2, xscr2, name2,
421+
level, xpp, result);
424422
}
425423
xdl_free_script(xscr1);
426424
xdl_free_script(xscr2);
427425
}
428426
xdl_free_env(&xe1);
429427
xdl_free_env(&xe2);
430428

431-
return 0;
429+
return status;
432430
}
433-

0 commit comments

Comments
 (0)