diff options
Diffstat (limited to 'xdiff/xmerge.c')
-rw-r--r-- | xdiff/xmerge.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/xdiff/xmerge.c b/xdiff/xmerge.c index 68c815f9d3..8cbe45e675 100644 --- a/xdiff/xmerge.c +++ b/xdiff/xmerge.c @@ -216,12 +216,16 @@ static int fill_conflict_hunk(xdfenv_t *xe1, const char *name1, static int xdl_fill_merge_buffer(xdfenv_t *xe1, const char *name1, xdfenv_t *xe2, const char *name2, + int favor, xdmerge_t *m, char *dest, int style, int marker_size) { int size, i; for (size = i = 0; m; m = m->next) { + if (favor && !m->mode) + m->mode = favor; + if (m->mode == 0) size = fill_conflict_hunk(xe1, name1, xe2, name2, size, i, style, m, dest, @@ -396,6 +400,7 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1, const char *name1, int i0, i1, i2, chg0, chg1, chg2; int level = flags & XDL_MERGE_LEVEL_MASK; int style = flags & XDL_MERGE_STYLE_MASK; + int favor = XDL_MERGE_FAVOR(flags); if (style == XDL_MERGE_DIFF3) { /* @@ -529,7 +534,7 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1, const char *name1, if (result) { int marker_size = xmp->marker_size; int size = xdl_fill_merge_buffer(xe1, name1, xe2, name2, - changes, NULL, style, + favor, changes, NULL, style, marker_size); result->ptr = xdl_malloc(size); if (!result->ptr) { @@ -537,7 +542,7 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1, const char *name1, return -1; } result->size = size; - xdl_fill_merge_buffer(xe1, name1, xe2, name2, changes, + xdl_fill_merge_buffer(xe1, name1, xe2, name2, favor, changes, result->ptr, style, marker_size); } return xdl_cleanup_merge(changes); |