summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2016-03-01 08:54:00 +0100
committerPatrick Steinhardt <ps@pks.im>2016-03-01 08:56:23 +0100
commita4ea7faaad52dd1be7ba6daaccd789bed3f01d61 (patch)
tree9d97796d7b31cd92e7493be8f5d3f142641a52eb
parentdbee683553ef4c43273b24ebc503d424c46c01f1 (diff)
downloadlibgit2-a4ea7faaad52dd1be7ba6daaccd789bed3f01d61.tar.gz
xdiff: fix memleak on error case
Commit 3d1abc5afce fixes a memory leak in the xdiff code. In the process of upstreaming the fix it was pointed out by Johannes Schindelin that there is another memory leak present (see [1]). Fix the second memory leak by applying the upstream fix to our code base. [1]: http://thread.gmane.org/gmane.comp.version-control.git/287034
-rw-r--r--src/xdiff/xmerge.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/src/xdiff/xmerge.c b/src/xdiff/xmerge.c
index 7928d1418..6448b5542 100644
--- a/src/xdiff/xmerge.c
+++ b/src/xdiff/xmerge.c
@@ -633,8 +633,11 @@ int xdl_merge(mmfile_t *orig, mmfile_t *mf1, mmfile_t *mf2,
result->ptr = NULL;
result->size = 0;
- if (xdl_do_diff(orig, mf1, xpp, &xe1) < 0 ||
- xdl_do_diff(orig, mf2, xpp, &xe2) < 0) {
+ if (xdl_do_diff(orig, mf1, xpp, &xe1) < 0) {
+ return -1;
+ }
+ if (xdl_do_diff(orig, mf2, xpp, &xe2) < 0) {
+ xdl_free_env(&xe1);
return -1;
}
if (xdl_change_compact(&xe1.xdf1, &xe1.xdf2, xpp->flags) < 0 ||