summary refs log tree commit diff
diff options
context:
space:
mode:
authorLars Hjemli <hjemli@gmail.com>2007-05-15 01:05:39 +0200
committerLars Hjemli <hjemli@gmail.com>2007-05-15 01:05:39 +0200
commitcfd2aa079770ddb4c93d5995b2cd7b5f25da3681 (patch)
tree44dd0fba85d035e445168b365618000ff82239f3
parentea2831f1c826d92c0158474c2d07837ec2f9fd6c (diff)
Do not alter incoming sha1 when handling the download refs.
The code used to overwrite the const sha1 parameter just to avoid declaring
an extra variable. Fix it.

Signed-off-by: Lars Hjemli <hjemli@gmail.com>
-rw-r--r--ui-summary.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/ui-summary.c b/ui-summary.c
index 3410e1a..b99ea98 100644
--- a/ui-summary.c
+++ b/ui-summary.c
@@ -130,6 +130,7 @@ static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1,
 	struct taginfo *info;
 	struct object *obj;
 	char buf[256], *url;
+	unsigned char fileid[20];
 
 	if (prefixcmp(refname, "refs/archives"))
 		return 0;
@@ -141,9 +142,11 @@ static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1,
 		tag = lookup_tag(sha1);
 		if (!tag || parse_tag(tag) || !(info = cgit_parse_tag(tag)))
 			return 0;
-		hashcpy(sha1, tag->tagged->sha1);
+		hashcpy(fileid, tag->tagged->sha1);
 	} else if (obj->type != OBJ_BLOB) {
 		return 0;
+	} else {
+		hashcpy(fileid, sha1);
 	}
 	if (!header) {
 		html("<table>");
@@ -152,7 +155,7 @@ static int cgit_print_archive_cb(const char *refname, const unsigned char *sha1,
 	}
 	html("<tr><td>");
 	url = cgit_pageurl(cgit_query_repo, "blob",
-			   fmt("id=%s&path=%s", sha1_to_hex(sha1),
+			   fmt("id=%s&path=%s", sha1_to_hex(fileid),
 			       buf));
 	html_link_open(url, NULL, NULL);
 	html_txt(buf);