summaryrefslogtreecommitdiffabout
Unidiff
Diffstat (more/less context) (ignore 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
@@ -206,17 +206,21 @@ int find_current_ref(const char *refname, const unsigned char *sha1,
206 206
207char *find_default_branch(struct cgit_repo *repo) 207char *find_default_branch(struct cgit_repo *repo)
208{ 208{
209 struct refmatch info; 209 struct refmatch info;
210 char *ref;
210 211
211 info.req_ref = repo->defbranch; 212 info.req_ref = repo->defbranch;
212 info.first_ref = NULL; 213 info.first_ref = NULL;
213 info.match = 0; 214 info.match = 0;
214 for_each_branch_ref(find_current_ref, &info); 215 for_each_branch_ref(find_current_ref, &info);
215 if (info.match) 216 if (info.match)
216 return info.req_ref; 217 ref = info.req_ref;
217 else 218 else
218 return info.first_ref; 219 ref = info.first_ref;
220 if (ref)
221 ref = xstrdup(ref);
222 return ref;
219} 223}
220 224
221static int prepare_repo_cmd(struct cgit_context *ctx) 225static int prepare_repo_cmd(struct cgit_context *ctx)
222{ 226{
@@ -240,9 +244,9 @@ static int prepare_repo_cmd(struct cgit_context *ctx)
240 } 244 }
241 ctx->page.title = fmt("%s - %s", ctx->repo->name, ctx->repo->desc); 245 ctx->page.title = fmt("%s - %s", ctx->repo->name, ctx->repo->desc);
242 246
243 if (!ctx->qry.head) { 247 if (!ctx->qry.head) {
244 ctx->qry.head = xstrdup(find_default_branch(ctx->repo)); 248 ctx->qry.head = find_default_branch(ctx->repo);
245 ctx->repo->defbranch = ctx->qry.head; 249 ctx->repo->defbranch = ctx->qry.head;
246 } 250 }
247 251
248 if (!ctx->qry.head) { 252 if (!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
@@ -517,9 +517,10 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page)
517 url = fmt("%s/%s", url, ctx.qry.path); 517 url = fmt("%s/%s", url, ctx.qry.path);
518 html_hidden("url", url); 518 html_hidden("url", url);
519 } 519 }
520 520
521 if (incl_head && strcmp(ctx.qry.head, ctx.repo->defbranch)) 521 if (incl_head && ctx.qry.head && ctx.repo->defbranch &&
522 strcmp(ctx.qry.head, ctx.repo->defbranch))
522 html_hidden("h", ctx.qry.head); 523 html_hidden("h", ctx.qry.head);
523 524
524 if (ctx.qry.sha1) 525 if (ctx.qry.sha1)
525 html_hidden("id", ctx.qry.sha1); 526 html_hidden("id", ctx.qry.sha1);