Merge branch 'rs/tighten-callers-of-deref-tag'

Code clean-up.

* rs/tighten-callers-of-deref-tag:
  line-log: handle deref_tag() returning NULL
  blame: handle deref_tag() returning NULL
  grep: handle deref_tag() returning NULL
This commit is contained in:
Junio C Hamano 2020-10-27 15:09:46 -07:00
commit ae84e924da
4 changed files with 17 additions and 4 deletions

View File

@ -2670,7 +2670,7 @@ static struct commit *find_single_final(struct rev_info *revs,
if (obj->flags & UNINTERESTING) if (obj->flags & UNINTERESTING)
continue; continue;
obj = deref_tag(revs->repo, obj, NULL, 0); obj = deref_tag(revs->repo, obj, NULL, 0);
if (obj->type != OBJ_COMMIT) if (!obj || obj->type != OBJ_COMMIT)
die("Non commit %s?", revs->pending.objects[i].name); die("Non commit %s?", revs->pending.objects[i].name);
if (found) if (found)
die("More than one commit to dig from %s and %s?", die("More than one commit to dig from %s and %s?",
@ -2701,7 +2701,7 @@ static struct commit *dwim_reverse_initial(struct rev_info *revs,
/* Is that sole rev a committish? */ /* Is that sole rev a committish? */
obj = revs->pending.objects[0].item; obj = revs->pending.objects[0].item;
obj = deref_tag(revs->repo, obj, NULL, 0); obj = deref_tag(revs->repo, obj, NULL, 0);
if (obj->type != OBJ_COMMIT) if (!obj || obj->type != OBJ_COMMIT)
return NULL; return NULL;
/* Do we have HEAD? */ /* Do we have HEAD? */
@ -2737,7 +2737,7 @@ static struct commit *find_single_initial(struct rev_info *revs,
if (!(obj->flags & UNINTERESTING)) if (!(obj->flags & UNINTERESTING))
continue; continue;
obj = deref_tag(revs->repo, obj, NULL, 0); obj = deref_tag(revs->repo, obj, NULL, 0);
if (obj->type != OBJ_COMMIT) if (!obj || obj->type != OBJ_COMMIT)
die("Non commit %s?", revs->pending.objects[i].name); die("Non commit %s?", revs->pending.objects[i].name);
if (found) if (found)
die("More than one commit to dig up from, %s and %s?", die("More than one commit to dig up from, %s and %s?",

View File

@ -820,6 +820,8 @@ static int peel_to_commit_oid(struct object_id *oid_ret, void *cbdata)
if (kind != OBJ_TAG) if (kind != OBJ_TAG)
return -1; return -1;
obj = deref_tag(r, parse_object(r, &oid), NULL, 0); obj = deref_tag(r, parse_object(r, &oid), NULL, 0);
if (!obj)
return -1;
oidcpy(&oid, &obj->oid); oidcpy(&oid, &obj->oid);
} }
} }

View File

@ -670,6 +670,17 @@ static int grep_objects(struct grep_opt *opt, const struct pathspec *pathspec,
NULL, 0); NULL, 0);
obj_read_unlock(); obj_read_unlock();
if (!real_obj) {
char hex[GIT_MAX_HEXSZ + 1];
const char *name = list->objects[i].name;
if (!name) {
oid_to_hex_r(hex, &list->objects[i].item->oid);
name = hex;
}
die(_("invalid object '%s' given."), name);
}
/* load the gitmodules file for this rev */ /* load the gitmodules file for this rev */
if (recurse_submodules) { if (recurse_submodules) {
submodule_free(opt->repo); submodule_free(opt->repo);

View File

@ -481,7 +481,7 @@ static struct commit *check_single_commit(struct rev_info *revs)
if (obj->flags & UNINTERESTING) if (obj->flags & UNINTERESTING)
continue; continue;
obj = deref_tag(revs->repo, obj, NULL, 0); obj = deref_tag(revs->repo, obj, NULL, 0);
if (obj->type != OBJ_COMMIT) if (!obj || obj->type != OBJ_COMMIT)
die("Non commit %s?", revs->pending.objects[i].name); die("Non commit %s?", revs->pending.objects[i].name);
if (commit) if (commit)
die("More than one commit to dig from: %s and %s?", die("More than one commit to dig from: %s and %s?",