]> git.ipfire.org Git - thirdparty/git.git/blobdiff - tree-walk.c
The sixth batch
[thirdparty/git.git] / tree-walk.c
index d5a8e096a6065209daab04e3ec77dda2515d3562..bb0ad34c5457d3b812663fb41ece1804fff6ef7a 100644 (file)
@@ -1,6 +1,5 @@
 #include "cache.h"
 #include "tree-walk.h"
-#include "unpack-trees.h"
 #include "dir.h"
 #include "object-store.h"
 #include "tree.h"
@@ -410,15 +409,20 @@ int traverse_trees(struct index_state *istate,
                   struct traverse_info *info)
 {
        int error = 0;
-       struct name_entry *entry = xmalloc(n*sizeof(*entry));
+       struct name_entry entry[MAX_TRAVERSE_TREES];
        int i;
-       struct tree_desc_x *tx = xcalloc(n, sizeof(*tx));
+       struct tree_desc_x tx[ARRAY_SIZE(entry)];
        struct strbuf base = STRBUF_INIT;
        int interesting = 1;
        char *traverse_path;
 
-       for (i = 0; i < n; i++)
+       if (n >= ARRAY_SIZE(entry))
+               BUG("traverse_trees() called with too many trees (%d)", n);
+
+       for (i = 0; i < n; i++) {
                tx[i].d = t[i];
+               tx[i].skip = NULL;
+       }
 
        if (info->prev) {
                strbuf_make_traverse_path(&base, info->prev,
@@ -506,10 +510,8 @@ int traverse_trees(struct index_state *istate,
                        if (mask & (1ul << i))
                                update_extended_entry(tx + i, entry + i);
        }
-       free(entry);
        for (i = 0; i < n; i++)
                free_extended_entry(tx + i);
-       free(tx);
        free(traverse_path);
        info->traverse_path = NULL;
        strbuf_release(&base);