X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=unpack-trees.c;h=f561d88156b827b15bad7dd4e00f944718149bd9;hb=8518088fe803131d11eade2b15796f26ae207191;hp=8cf0da317d8afe4bfe3cae7051e3a385d44cf7ef;hpb=ffd45f967817a484933c7f905572c9f31f9b9aab;p=thirdparty%2Fgit.git diff --git a/unpack-trees.c b/unpack-trees.c index 8cf0da317d..f561d88156 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; }