X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=fetch.c;h=e040ef97b6b7e29d9e6482ad0ebead589e86a2a2;hb=0fa5cb0d1e13bf757b41b0b0665305b7c819ee60;hp=1291bbac945781640aba312e30ba3ae274aaee9b;hpb=283d3184dfe1c4053470ab2b6bfc8250d130e0bb;p=git.git diff --git a/fetch.c b/fetch.c index 1291bbac..e040ef97 100644 --- a/fetch.c +++ b/fetch.c @@ -47,13 +47,20 @@ static int process_tree(struct tree *tree) desc.buf = tree->buffer; desc.size = tree->size; while (tree_entry(&desc, &entry)) { + struct object *obj = NULL; + if (S_ISDIR(entry.mode)) { struct tree *tree = lookup_tree(entry.sha1); - process_tree(tree); - } else { + if (tree) + obj = &tree->object; + } + else { struct blob *blob = lookup_blob(entry.sha1); - process(&blob->object); + if (blob) + obj = &blob->object; } + if (!obj || process(obj)) + return -1; } free(tree->buffer); tree->buffer = NULL;