]> git.ipfire.org Git - thirdparty/git.git/blobdiff - read-tree.c
git-status: use ls-files --others --directory for untracked list.
[thirdparty/git.git] / read-tree.c
index df156ea0dad15ee810e8036442dfcab9202ef46a..a46c6fe2f5d3234abe5dce0b7a9d44da07b6dae9 100644 (file)
@@ -294,17 +294,20 @@ static int unpack_trees(merge_fn_t fn)
 {
        int indpos = 0;
        unsigned len = object_list_length(trees);
-       struct tree_entry_list **posns = 
-               xmalloc(len * sizeof(struct tree_entry_list *));
+       struct tree_entry_list **posns;
        int i;
        struct object_list *posn = trees;
        merge_size = len;
-       for (i = 0; i < len; i++) {
-               posns[i] = ((struct tree *) posn->item)->entries;
-               posn = posn->next;
+
+       if (len) {
+               posns = xmalloc(len * sizeof(struct tree_entry_list *));
+               for (i = 0; i < len; i++) {
+                       posns[i] = ((struct tree *) posn->item)->entries;
+                       posn = posn->next;
+               }
+               if (unpack_trees_rec(posns, len, "", fn, &indpos))
+                       return -1;
        }
-       if (unpack_trees_rec(posns, len, "", fn, &indpos))
-               return -1;
 
        if (trivial_merges_only && nontrivial_merge)
                die("Merge requires file-level merging");
@@ -629,6 +632,8 @@ int main(int argc, char **argv)
        unsigned char sha1[20];
        merge_fn_t fn = NULL;
 
+       setup_git_directory();
+
        newfd = hold_index_file_for_update(&cache_file, get_index_file());
        if (newfd < 0)
                die("unable to create new cachefile");