X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=sha1_name.c;h=c2805e736b3086a0e33271a4b5c73cea7d2c55cd;hb=faa4bc35a05ddb1822f3770cd8c51859e3b929ee;hp=be8489e4e5fc98c6e38036a40fb5ca8c0db77ebc;hpb=1ae419cb3902e6cc45538a9673539ed5316fcf30;p=git.git diff --git a/sha1_name.c b/sha1_name.c index be8489e4e..c2805e736 100644 --- a/sha1_name.c +++ b/sha1_name.c @@ -494,8 +494,11 @@ static int peel_onion(const char *name, int len, unsigned char *sha1) return error("%.*s: expected %s type, but the object dereferences to %s type", len, name, typename(expected_type), typename(o->type)); + if (!o) + return -1; if (!o->parsed) - parse_object(o->sha1); + if (!parse_object(o->sha1)) + return -1; } } return 0; @@ -578,8 +581,11 @@ static int handle_one_ref(const char *path, struct object *object = parse_object(sha1); if (!object) return 0; - if (object->type == OBJ_TAG) + if (object->type == OBJ_TAG) { object = deref_tag(object, path, strlen(path)); + if (!object) + return 0; + } if (object->type != OBJ_COMMIT) return 0; insert_by_date((struct commit *)object, list); @@ -617,7 +623,8 @@ static int get_sha1_oneline(const char *prefix, unsigned char *sha1) unsigned long size; commit = pop_most_recent_commit(&list, ONELINE_SEEN); - parse_object(commit->object.sha1); + if (!parse_object(commit->object.sha1)) + continue; if (temp_commit_buffer) free(temp_commit_buffer); if (commit->buffer)