aboutsummaryrefslogtreecommitdiffstats
path: root/ui-tag.c
diff options
context:
space:
mode:
Diffstat (limited to 'ui-tag.c')
-rw-r--r--ui-tag.c14
1 files changed, 9 insertions, 5 deletions
diff --git a/ui-tag.c b/ui-tag.c
index 397e15b..aea7958 100644
--- a/ui-tag.c
+++ b/ui-tag.c
@@ -41,6 +41,7 @@ static void print_download_links(char *revname)
41 41
42void cgit_print_tag(char *revname) 42void cgit_print_tag(char *revname)
43{ 43{
44 struct strbuf fullref = STRBUF_INIT;
44 unsigned char sha1[20]; 45 unsigned char sha1[20];
45 struct object *obj; 46 struct object *obj;
46 struct tag *tag; 47 struct tag *tag;
@@ -49,20 +50,21 @@ void cgit_print_tag(char *revname)
49 if (!revname) 50 if (!revname)
50 revname = ctx.qry.head; 51 revname = ctx.qry.head;
51 52
52 if (get_sha1(fmt("refs/tags/%s", revname), sha1)) { 53 strbuf_addf(&fullref, "refs/tags/%s", revname);
54 if (get_sha1(fullref.buf, sha1)) {
53 cgit_print_error("Bad tag reference: %s", revname); 55 cgit_print_error("Bad tag reference: %s", revname);
54 return; 56 goto cleanup;
55 } 57 }
56 obj = parse_object(sha1); 58 obj = parse_object(sha1);
57 if (!obj) { 59 if (!obj) {
58 cgit_print_error("Bad object id: %s", sha1_to_hex(sha1)); 60 cgit_print_error("Bad object id: %s", sha1_to_hex(sha1));
59 return; 61 goto cleanup;
60 } 62 }
61 if (obj->type == OBJ_TAG) { 63 if (obj->type == OBJ_TAG) {
62 tag = lookup_tag(sha1); 64 tag = lookup_tag(sha1);
63 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) { 65 if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag))) {
64 cgit_print_error("Bad tag object: %s", revname); 66 cgit_print_error("Bad tag object: %s", revname);
65 return; 67 goto cleanup;
66 } 68 }
67 html("<table class='commit-info'>\n"); 69 html("<table class='commit-info'>\n");
68 htmlf("<tr><td>tag name</td><td>"); 70 htmlf("<tr><td>tag name</td><td>");
@@ -101,5 +103,7 @@ void cgit_print_tag(char *revname)
101 print_download_links(revname); 103 print_download_links(revname);
102 html("</table>\n"); 104 html("</table>\n");
103 } 105 }
104 return; 106
107cleanup:
108 strbuf_release(&fullref);
105} 109}