summaryrefslogtreecommitdiff
path: root/fetch.c
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <junkio@cox.net>2006-06-02 15:24:07 -0700
committerLibravatar Junio C Hamano <junkio@cox.net>2006-06-02 15:24:07 -0700
commit0fa5cb0d1e13bf757b41b0b0665305b7c819ee60 (patch)
tree04c0a0de08d83ce0c9929107659c97194b61bc24 /fetch.c
parentMerge branch 'jc/fmt-patch' into next (diff)
parentfetch.c: do not call process_tree() from process_tree(). (diff)
downloadtgif-0fa5cb0d1e13bf757b41b0b0665305b7c819ee60.tar.xz
Merge branch 'lt/tree-2' into next
* lt/tree-2: fetch.c: do not call process_tree() from process_tree().
Diffstat (limited to 'fetch.c')
-rw-r--r--fetch.c13
1 files changed, 10 insertions, 3 deletions
diff --git a/fetch.c b/fetch.c
index 1291bbac94..e040ef97b6 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;