fetch-pack: check parse_commit/object results

Signed-off-by: Martin Koegler <mkoegler@auto.tuwien.ac.at>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Martin Koegler 2008-03-03 07:31:23 +01:00 committed by Junio C Hamano
parent 2d3539e87a
commit f3ec549481

View file

@ -41,7 +41,8 @@ static void rev_list_push(struct commit *commit, int mark)
commit->object.flags |= mark; commit->object.flags |= mark;
if (!(commit->object.parsed)) if (!(commit->object.parsed))
parse_commit(commit); if (parse_commit(commit))
return;
insert_by_date(commit, &rev_list); insert_by_date(commit, &rev_list);
@ -83,7 +84,8 @@ static void mark_common(struct commit *commit,
if (!ancestors_only && !(o->flags & POPPED)) if (!ancestors_only && !(o->flags & POPPED))
non_common_revs--; non_common_revs--;
if (!o->parsed && !dont_parse) if (!o->parsed && !dont_parse)
parse_commit(commit); if (parse_commit(commit))
return;
for (parents = commit->parents; for (parents = commit->parents;
parents; parents;
@ -103,20 +105,20 @@ static const unsigned char* get_rev(void)
while (commit == NULL) { while (commit == NULL) {
unsigned int mark; unsigned int mark;
struct commit_list* parents; struct commit_list *parents = NULL;
if (rev_list == NULL || non_common_revs == 0) if (rev_list == NULL || non_common_revs == 0)
return NULL; return NULL;
commit = rev_list->item; commit = rev_list->item;
if (!(commit->object.parsed)) if (!(commit->object.parsed))
parse_commit(commit); if (!parse_commit(commit))
parents = commit->parents;
commit->object.flags |= POPPED; commit->object.flags |= POPPED;
if (!(commit->object.flags & COMMON)) if (!(commit->object.flags & COMMON))
non_common_revs--; non_common_revs--;
parents = commit->parents;
if (commit->object.flags & COMMON) { if (commit->object.flags & COMMON) {
/* do not send "have", and ignore ancestors */ /* do not send "have", and ignore ancestors */
commit = NULL; commit = NULL;
@ -212,7 +214,8 @@ static int find_common(int fd[2], unsigned char *result_sha1,
if (!lookup_object(sha1)) if (!lookup_object(sha1))
die("object not found: %s", line); die("object not found: %s", line);
/* make sure that it is parsed as shallow */ /* make sure that it is parsed as shallow */
parse_object(sha1); if (!parse_object(sha1))
die("error in object: %s", line);
if (unregister_shallow(sha1)) if (unregister_shallow(sha1))
die("no shallow found: %s", line); die("no shallow found: %s", line);
continue; continue;