@@ -315,16 +315,19 @@ int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
315315 long * kvd , * kvdf , * kvdb ;
316316 xdalgoenv_t xenv ;
317317 diffdata_t dd1 , dd2 ;
318+ int res ;
318319
319- if (XDF_DIFF_ALG (xpp -> flags ) == XDF_PATIENCE_DIFF )
320- return xdl_do_patience_diff (mf1 , mf2 , xpp , xe );
321-
322- if (XDF_DIFF_ALG (xpp -> flags ) == XDF_HISTOGRAM_DIFF )
323- return xdl_do_histogram_diff (mf1 , mf2 , xpp , xe );
320+ if (xdl_prepare_env (mf1 , mf2 , xpp , xe ) < 0 )
321+ return -1 ;
324322
325- if (xdl_prepare_env (mf1 , mf2 , xpp , xe ) < 0 ) {
323+ if (XDF_DIFF_ALG (xpp -> flags ) == XDF_PATIENCE_DIFF ) {
324+ res = xdl_do_patience_diff (xpp , xe );
325+ goto out ;
326+ }
326327
327- return -1 ;
328+ if (XDF_DIFF_ALG (xpp -> flags ) == XDF_HISTOGRAM_DIFF ) {
329+ res = xdl_do_histogram_diff (xpp , xe );
330+ goto out ;
328331 }
329332
330333 /*
@@ -334,7 +337,7 @@ int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
334337 * One is to store the forward path and one to store the backward path.
335338 */
336339 ndiags = xe -> xdf1 .nreff + xe -> xdf2 .nreff + 3 ;
337- if (!(kvd = ( long * ) xdl_malloc (( 2 * ndiags + 2 ) * sizeof ( long )) )) {
340+ if (!XDL_ALLOC_ARRAY (kvd , 2 * ndiags + 2 )) {
338341
339342 xdl_free_env (xe );
340343 return -1 ;
@@ -359,17 +362,15 @@ int xdl_do_diff(mmfile_t *mf1, mmfile_t *mf2, xpparam_t const *xpp,
359362 dd2 .rchg = xe -> xdf2 .rchg ;
360363 dd2 .rindex = xe -> xdf2 .rindex ;
361364
362- if (xdl_recs_cmp (& dd1 , 0 , dd1 .nrec , & dd2 , 0 , dd2 .nrec ,
363- kvdf , kvdb , (xpp -> flags & XDF_NEED_MINIMAL ) != 0 , & xenv ) < 0 ) {
364-
365- xdl_free (kvd );
366- xdl_free_env (xe );
367- return -1 ;
368- }
369-
365+ res = xdl_recs_cmp (& dd1 , 0 , dd1 .nrec , & dd2 , 0 , dd2 .nrec ,
366+ kvdf , kvdb , (xpp -> flags & XDF_NEED_MINIMAL ) != 0 ,
367+ & xenv );
370368 xdl_free (kvd );
369+ out :
370+ if (res < 0 )
371+ xdl_free_env (xe );
371372
372- return 0 ;
373+ return res ;
373374}
374375
375376
@@ -972,7 +973,7 @@ void xdl_free_script(xdchange_t *xscr) {
972973 }
973974}
974975
975- static int xdl_call_hunk_func (xdfenv_t * xe , xdchange_t * xscr , xdemitcb_t * ecb ,
976+ static int xdl_call_hunk_func (xdfenv_t * xe XDL_UNUSED , xdchange_t * xscr , xdemitcb_t * ecb ,
976977 xdemitconf_t const * xecfg )
977978{
978979 xdchange_t * xch , * xche ;
0 commit comments