From aeb55209d397ab008c89d649ed74b8944d97f598 Mon Sep 17 00:00:00 2001 From: Bryce Kwon Date: Thu, 27 Aug 2026 03:39:29 -1000 Subject: Null-terminate the stats pathspec argv --- source/ui-stats.c | 5 ++++- tests/t0112-stats.sh | 6 ++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/source/ui-stats.c b/source/ui-stats.c index f1a4d65..182cc06 100644 --- a/source/ui-stats.c +++ b/source/ui-stats.c @@ -247,7 +247,10 @@ static struct string_list collect_stats(const struct cgit_period *period) struct string_list authors; struct rev_info rev; struct commit *commit; - const char *argv[] = {NULL, ctx.qry.head, NULL, NULL}; + // setup_revisions reads the entries after the double dash up to a + // NULL, past the count, so the sentinel has to stay even when the + // path fills the slot before it. + const char *argv[] = {NULL, ctx.qry.head, NULL, NULL, NULL}; int argc = 2; time_t since; struct tm tm; diff --git a/tests/t0112-stats.sh b/tests/t0112-stats.sh index 2ada672..bc9c25b 100755 --- a/tests/t0112-stats.sh +++ b/tests/t0112-stats.sh @@ -70,6 +70,12 @@ test_expect_success 'extensionless fixture files fold into Other' ' grep "class=.left.>Other" tmp ' +test_expect_success 'stats below a path stay a normal page' ' + statq "url=stat/stats/file-1" >tmp && + grep "Status: 200" tmp && + grep "

Commits per author" tmp +' + test_expect_success 'all four periods offered when max-stats is unset' ' statq "url=stat/stats/" >tmp && grep "