#include "cache.h"
#include "commit.h"
+#include "tag.h"
static int is_shallow = -1;
return register_commit_graft(graft, 0);
}
-int is_repository_shallow()
+int is_repository_shallow(void)
{
FILE *fp;
char buf[1024];
if (!commit) {
if (i < heads->nr) {
commit = (struct commit *)
- heads->objects[i++].item;
- if (commit->object.type != OBJ_COMMIT) {
+ deref_tag(heads->objects[i++].item, NULL, 0);
+ if (!commit || commit->object.type != OBJ_COMMIT) {
commit = NULL;
continue;
}
- commit->util = xcalloc(1, sizeof(int));
+ if (!commit->util)
+ commit->util = xmalloc(sizeof(int));
+ *(int *)commit->util = 0;
cur_depth = 0;
} else {
commit = (struct commit *)
cur_depth = *(int *)commit->util;
}
}
- parse_commit(commit);
+ if (parse_commit(commit))
+ die("invalid commit");
commit->object.flags |= not_shallow_flag;
cur_depth++;
for (p = commit->parents, commit = NULL; p; p = p->next) {
return result;
}
-