commit 785d65a4b3057e85fda2a59c84f19be80408935a from: Stefan Sperling date: Sat Dec 05 22:11:32 2020 UTC make got_repo_object_match_tag() work with absolute reference names Bug triggered by naddy while testing a patch for tog. ok naddy commit - 5a8b5076742038c09dece0c1e59ecddf8cd7a41a commit + 785d65a4b3057e85fda2a59c84f19be80408935a blob - e604a6980724929b924f7abf1a893dcaafca0590 blob + 4c8c8ac61ee774c04b4daf2fe2e46b0b82fed5ac --- lib/repository.c +++ lib/repository.c @@ -1502,6 +1502,7 @@ got_repo_object_match_tag(struct got_tag_object **tag, struct got_reflist_head refs; struct got_reflist_entry *re; struct got_object_id *tag_id; + int name_is_absolute = (strncmp(name, "refs/", 5) == 0); SIMPLEQ_INIT(&refs); *tag = NULL; @@ -1515,7 +1516,8 @@ got_repo_object_match_tag(struct got_tag_object **tag, refname = got_ref_get_name(re->ref); if (got_ref_is_symbolic(re->ref)) continue; - refname += strlen("refs/tags/"); + if (!name_is_absolute) + refname += strlen("refs/tags/"); if (strcmp(refname, name) != 0) continue; err = got_ref_resolve(&tag_id, repo, re->ref);