summaryrefslogtreecommitdiffabout
authorLars Hjemli <hjemli@gmail.com>2008-07-27 10:32:08 (UTC)
committer Lars Hjemli <hjemli@gmail.com>2008-07-27 10:32:08 (UTC)
commit25c84326deff579d5de4b880f9dca2690bdc8569 (patch) (side-by-side diff)
tree9ca41073e0e06e6dc24f7800182bf4a7b22f548c
parent2d6ee032d0c2f84ebcfaa12d3289e85cfab18fcd (diff)
downloadcgit-25c84326deff579d5de4b880f9dca2690bdc8569.zip
cgit-25c84326deff579d5de4b880f9dca2690bdc8569.tar.gz
cgit-25c84326deff579d5de4b880f9dca2690bdc8569.tar.bz2
Be prepared for empty repositories
Before this patch, cgit would segfault on repositories with no refs. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--cgit.c10
-rw-r--r--ui-shared.c3
2 files changed, 9 insertions, 4 deletions
diff --git a/cgit.c b/cgit.c
index 8795085..cefeddf 100644
--- a/cgit.c
+++ b/cgit.c
@@ -209,2 +209,3 @@ char *find_default_branch(struct cgit_repo *repo)
struct refmatch info;
+ char *ref;
@@ -215,5 +216,8 @@ char *find_default_branch(struct cgit_repo *repo)
if (info.match)
- return info.req_ref;
+ ref = info.req_ref;
else
- return info.first_ref;
+ ref = info.first_ref;
+ if (ref)
+ ref = xstrdup(ref);
+ return ref;
}
@@ -243,3 +247,3 @@ static int prepare_repo_cmd(struct cgit_context *ctx)
if (!ctx->qry.head) {
- ctx->qry.head = xstrdup(find_default_branch(ctx->repo));
+ ctx->qry.head = find_default_branch(ctx->repo);
ctx->repo->defbranch = ctx->qry.head;
diff --git a/ui-shared.c b/ui-shared.c
index 209af6e..4280a70 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -520,3 +520,4 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page)
- if (incl_head && strcmp(ctx.qry.head, ctx.repo->defbranch))
+ if (incl_head && ctx.qry.head && ctx.repo->defbranch &&
+ strcmp(ctx.qry.head, ctx.repo->defbranch))
html_hidden("h", ctx.qry.head);