diff options
author | Jonathan Nieder <jrnieder@gmail.com> | 2012-03-09 21:20:34 -0600 |
---|---|---|
committer | Jonathan Nieder <jrnieder@gmail.com> | 2012-03-09 22:02:44 -0600 |
commit | c27e559da5b26faa31858fe6dc5492d4f605b867 (patch) | |
tree | d90cfd2048f611a2b2dcffa9a174ce46e437d795 /fast-import.c | |
parent | 8dc6a373d201839859fe7924b63e57526ee2fc22 (diff) | |
download | git-c27e559da5b26faa31858fe6dc5492d4f605b867.tar.gz git-c27e559da5b26faa31858fe6dc5492d4f605b867.tar.xz |
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>
Diffstat (limited to 'fast-import.c')
-rw-r--r-- | fast-import.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fast-import.c b/fast-import.c index 6c37b8400..fff285cd0 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); } |