Code

fast-import: leakfix for 'ls' of dirty trees
authorJonathan Nieder <jrnieder@gmail.com>
Sat, 10 Mar 2012 03:20:34 +0000 (21:20 -0600)
committerJonathan Nieder <jrnieder@gmail.com>
Sat, 10 Mar 2012 04:02:44 +0000 (22:02 -0600)
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>
fast-import.c

index 6c37b8400a143db55e3e16c6a3af788aa0467322..fff285cd0f73ca2bfe5b76aa3d87a156ad7808ff 100644 (file)
@@ -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);
 }