Be prepared for empty repositories
Before this patch, cgit would segfault on repositories with no refs. Signed-off-by: Lars Hjemli <hjemli@gmail.com>
This commit is contained in:
parent
2d6ee032d0
commit
25c84326de
10
cgit.c
10
cgit.c
@ -207,15 +207,19 @@ int find_current_ref(const char *refname, const unsigned char *sha1,
|
|||||||
char *find_default_branch(struct cgit_repo *repo)
|
char *find_default_branch(struct cgit_repo *repo)
|
||||||
{
|
{
|
||||||
struct refmatch info;
|
struct refmatch info;
|
||||||
|
char *ref;
|
||||||
|
|
||||||
info.req_ref = repo->defbranch;
|
info.req_ref = repo->defbranch;
|
||||||
info.first_ref = NULL;
|
info.first_ref = NULL;
|
||||||
info.match = 0;
|
info.match = 0;
|
||||||
for_each_branch_ref(find_current_ref, &info);
|
for_each_branch_ref(find_current_ref, &info);
|
||||||
if (info.match)
|
if (info.match)
|
||||||
return info.req_ref;
|
ref = info.req_ref;
|
||||||
else
|
else
|
||||||
return info.first_ref;
|
ref = info.first_ref;
|
||||||
|
if (ref)
|
||||||
|
ref = xstrdup(ref);
|
||||||
|
return ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int prepare_repo_cmd(struct cgit_context *ctx)
|
static int prepare_repo_cmd(struct cgit_context *ctx)
|
||||||
@ -241,7 +245,7 @@ static int prepare_repo_cmd(struct cgit_context *ctx)
|
|||||||
ctx->page.title = fmt("%s - %s", ctx->repo->name, ctx->repo->desc);
|
ctx->page.title = fmt("%s - %s", ctx->repo->name, ctx->repo->desc);
|
||||||
|
|
||||||
if (!ctx->qry.head) {
|
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;
|
ctx->repo->defbranch = ctx->qry.head;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -518,7 +518,8 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page)
|
|||||||
html_hidden("url", url);
|
html_hidden("url", url);
|
||||||
}
|
}
|
||||||
|
|
||||||
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);
|
html_hidden("h", ctx.qry.head);
|
||||||
|
|
||||||
if (ctx.qry.sha1)
|
if (ctx.qry.sha1)
|
||||||
|
Loading…
Reference in New Issue
Block a user