Skip to content

Commit 4da4026

Browse files
committed
Merge branch 'ps/plug-xdl-merge-leak' into maint
* ps/plug-xdl-merge-leak: xdiff/xmerge: fix memory leak in xdl_merge
2 parents 08e21c9 + 4867f11 commit 4da4026

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

xdiff/xmerge.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -641,8 +641,11 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, mmfile_t *mf2,
641641
result->ptr = NULL;
642642
result->size = 0;
643643

644-
if (xdl_do_diff(orig, mf1, xpp, &xe1) < 0 ||
645-
xdl_do_diff(orig, mf2, xpp, &xe2) < 0) {
644+
if (xdl_do_diff(orig, mf1, xpp, &xe1) < 0) {
645+
return -1;
646+
}
647+
if (xdl_do_diff(orig, mf2, xpp, &xe2) < 0) {
648+
xdl_free_env(&xe1);
646649
return -1;
647650
}
648651
if (xdl_change_compact(&xe1.xdf1, &xe1.xdf2, xpp->flags) < 0 ||
@@ -654,6 +657,8 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, mmfile_t *mf2,
654657
if (xdl_change_compact(&xe2.xdf1, &xe2.xdf2, xpp->flags) < 0 ||
655658
xdl_change_compact(&xe2.xdf2, &xe2.xdf1, xpp->flags) < 0 ||
656659
xdl_build_script(&xe2, &xscr2) < 0) {
660+
xdl_free_script(xscr1);
661+
xdl_free_env(&xe1);
657662
xdl_free_env(&xe2);
658663
return -1;
659664
}

0 commit comments

Comments
 (0)