summaryrefslogtreecommitdiff
path: root/src/tree.c
diff options
context:
space:
mode:
authorwilke <wilke.havinga@quintiq.com>2013-09-13 21:36:39 +0200
committerwilke <wilke.havinga@quintiq.com>2013-09-13 21:36:39 +0200
commitd7fc2eb29b4574b96b190572470bfcb7dab9d078 (patch)
tree1f809b43b8855035f086d14a2349b76fdcfa9e61 /src/tree.c
parent4e01e3029b389dc45a040b794ceeeb0cbe32004a (diff)
downloadlibgit2-d7fc2eb29b4574b96b190572470bfcb7dab9d078.tar.gz
Fix memory leak in git_tree_walk on error or when stopping the walk from the supplied callback
Diffstat (limited to 'src/tree.c')
-rw-r--r--src/tree.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/tree.c b/src/tree.c
index cd8adfb96..0bdf9a93e 100644
--- a/src/tree.c
+++ b/src/tree.c
@@ -907,11 +907,12 @@ static int tree_walk(
return -1;
error = tree_walk(subtree, callback, path, payload, preorder);
+ git_tree_free(subtree);
+
if (error != 0)
break;
git_buf_truncate(path, path_len);
- git_tree_free(subtree);
}
if (!preorder && callback(path->ptr, entry, payload) < 0) {