summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Nieder <jrnieder@gmail.com>2012-03-10 03:20:34 (GMT)
committerJonathan Nieder <jrnieder@gmail.com>2012-03-10 04:02:44 (GMT)
commitc27e559da5b26faa31858fe6dc5492d4f605b867 (patch)
treed90cfd2048f611a2b2dcffa9a174ce46e437d795
parent8dc6a373d201839859fe7924b63e57526ee2fc22 (diff)
downloadgit-c27e559da5b26faa31858fe6dc5492d4f605b867.zip
git-c27e559da5b26faa31858fe6dc5492d4f605b867.tar.gz
git-c27e559da5b26faa31858fe6dc5492d4f605b867.tar.bz2
fast-import: leakfix for 'ls' of dirty trees
When the chosen directory has changed since it was last written to pack, "tree_content_get" makes a deep copy of its content to scribble on while computing the tree name, which we forgot to free. This leak has been present since the 'ls' command was introduced in v1.7.5-rc0~3^2~33 (fast-import: add 'ls' command, 2010-12-02). Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
-rw-r--r--fast-import.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/fast-import.c b/fast-import.c
index 6c37b84..fff285c 100644
--- a/fast-import.c
+++ b/fast-import.c
@@ -2987,6 +2987,8 @@ static void parse_ls(struct branch *b)
store_tree(&leaf);
print_ls(leaf.versions[1].mode, leaf.versions[1].sha1, p);
+ if (leaf.tree)
+ release_tree_content_recursive(leaf.tree);
if (!b || root != &b->branch_tree)
release_tree_entry(root);
}