about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--cgit.c1
-rw-r--r--ui-shared.c7
2 files changed, 6 insertions, 2 deletions
diff --git a/cgit.c b/cgit.c
index c82587b..6e5215e 100644
--- a/cgit.c
+++ b/cgit.c
@@ -289,7 +289,6 @@ static void process_request(void *cbdata)
 	cmd = cgit_get_cmd(ctx);
 	if (!cmd) {
 		ctx->page.title = "cgit error";
-		ctx->repo = NULL;
 		cgit_print_http_headers(ctx);
 		cgit_print_docstart(ctx);
 		cgit_print_pageheader(ctx);
diff --git a/ui-shared.c b/ui-shared.c
index 224e5f3..76cd00d 100644
--- a/ui-shared.c
+++ b/ui-shared.c
@@ -577,15 +577,20 @@ void add_hidden_formfields(int incl_head, int incl_search, char *page)
 	}
 }
 
+const char *fallback_cmd = "repolist";
+
 char *hc(struct cgit_cmd *cmd, const char *page)
 {
-	return (strcmp(cmd->name, page) ? NULL : "active");
+	return (strcmp(cmd ? cmd->name : fallback_cmd, page) ? NULL : "active");
 }
 
 void cgit_print_pageheader(struct cgit_context *ctx)
 {
 	struct cgit_cmd *cmd = cgit_get_cmd(ctx);
 
+	if (!cmd && ctx->repo)
+		fallback_cmd = "summary";
+
 	html("<table id='header'>\n");
 	html("<tr>\n");
 	html("<td class='logo' rowspan='2'><a href='");