diff options
author | Junio C Hamano <gitster@pobox.com> | 2010-08-20 12:53:09 -0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2010-08-20 12:53:09 -0700 |
commit | 16bfbe6352e90b87de26effe5ce120ab74ebafc7 (patch) | |
tree | 6525fdf55a6da9e426516546e7b652c1458b971f /unpack-trees.c | |
parent | 316fa401e1c953ffc80533aaf6839817595cdd77 (diff) | |
parent | b6b56aceb85fe05dc681ac7ee1249e6b6e26e957 (diff) | |
download | git-16bfbe6352e90b87de26effe5ce120ab74ebafc7.tar.gz git-16bfbe6352e90b87de26effe5ce120ab74ebafc7.tar.xz |
Merge branch 'jn/maint-plug-leak' into maint
* jn/maint-plug-leak:
write-tree: Avoid leak when index refers to an invalid object
read-tree: stop leaking tree objects
core: Stop leaking ondisk_cache_entrys
Diffstat (limited to 'unpack-trees.c')
-rw-r--r-- | unpack-trees.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/unpack-trees.c b/unpack-trees.c index 8cf0da317..f561d8815 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -329,6 +329,7 @@ static int traverse_trees_recursive(int n, unsigned long dirmask, unsigned long { int i, ret, bottom; struct tree_desc t[MAX_UNPACK_TREES]; + void *buf[MAX_UNPACK_TREES]; struct traverse_info newinfo; struct name_entry *p; @@ -346,12 +347,16 @@ static int traverse_trees_recursive(int n, unsigned long dirmask, unsigned long const unsigned char *sha1 = NULL; if (dirmask & 1) sha1 = names[i].sha1; - fill_tree_descriptor(t+i, sha1); + buf[i] = fill_tree_descriptor(t+i, sha1); } bottom = switch_cache_bottom(&newinfo); ret = traverse_trees(n, t, &newinfo); restore_cache_bottom(&newinfo, bottom); + + for (i = 0; i < n; i++) + free(buf[i]); + return ret; } |