Code

Merge branch 'en/maint-hash-object' into maint
[git.git] / xdiff / xdiffi.c
index 1bad8462fb32cffdc9ff20a278d513e7a444b257..3e97462bdd2ed72b4ec60a1eb3869e516609867b 100644 (file)
@@ -329,6 +329,9 @@ int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
        xdalgoenv_t xenv;
        diffdata_t dd1, dd2;
 
+       if (xpp->flags & XDF_PATIENCE_DIFF)
+               return xdl_do_patience_diff(mf1, mf2, xpp, xe);
+
        if (xdl_prepare_env(mf1, mf2, xpp, xe) < 0) {
 
                return -1;
@@ -538,6 +541,8 @@ int xdl_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
             xdemitconf_t const *xecfg, xdemitcb_t *ecb) {
        xdchange_t *xscr;
        xdfenv_t xe;
+       emit_func_t ef = xecfg->emit_func ?
+               (emit_func_t)xecfg->emit_func : xdl_emit_diff;
 
        if (xdl_do_diff(mf1, mf2, xpp, &xe) < 0) {
 
@@ -551,7 +556,7 @@ int xdl_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
                return -1;
        }
        if (xscr) {
-               if (xdl_emit_diff(&xe, xscr, ecb, xecfg) < 0) {
+               if (ef(&xe, xscr, ecb, xecfg) < 0) {
 
                        xdl_free_script(xscr);
                        xdl_free_env(&xe);