Skip to content

Commit c1662a0

Browse files
committed
Merge branch 'ps/maintenance-start-crash-fix'
"git maintenance start" crashed due to an uninitialized variable reference, which has been corrected. * ps/maintenance-start-crash-fix: builtin/gc: fix crash when running `git maintenance start`
2 parents 2849552 + c95547a commit c1662a0

File tree

2 files changed

+21
-2
lines changed

2 files changed

+21
-2
lines changed

builtin/gc.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1832,7 +1832,7 @@ static const char *get_extra_launchctl_strings(void) {
18321832
* | Input | Output |
18331833
* | *cmd | return code | *out | *is_available |
18341834
* +-------+-------------+-------------------+---------------+
1835-
* | "foo" | false | NULL | (unchanged) |
1835+
* | "foo" | false | "foo" (allocated) | (unchanged) |
18361836
* +-------+-------------+-------------------+---------------+
18371837
*
18381838
* GIT_TEST_MAINT_SCHEDULER set to “foo:./mock_foo.sh,bar:./mock_bar.sh”
@@ -1850,8 +1850,11 @@ static int get_schedule_cmd(const char *cmd, int *is_available, char **out)
18501850
struct string_list_item *item;
18511851
struct string_list list = STRING_LIST_INIT_NODUP;
18521852

1853-
if (!testing)
1853+
if (!testing) {
1854+
if (out)
1855+
*out = xstrdup(cmd);
18541856
return 0;
1857+
}
18551858

18561859
if (is_available)
18571860
*is_available = 0;

t/t7900-maintenance.sh

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -646,6 +646,22 @@ test_expect_success !MINGW 'register and unregister with regex metacharacters' '
646646
maintenance.repo "$(pwd)/$META"
647647
'
648648

649+
test_expect_success 'start without GIT_TEST_MAINT_SCHEDULER' '
650+
test_when_finished "rm -rf systemctl.log script repo" &&
651+
mkdir script &&
652+
write_script script/systemctl <<-\EOF &&
653+
echo "$*" >>../systemctl.log
654+
EOF
655+
git init repo &&
656+
(
657+
cd repo &&
658+
sane_unset GIT_TEST_MAINT_SCHEDULER &&
659+
PATH="$PWD/../script:$PATH" git maintenance start --scheduler=systemd
660+
) &&
661+
test_grep -- "--user list-timers" systemctl.log &&
662+
test_grep -- "enable --now git-maintenance@" systemctl.log
663+
'
664+
649665
test_expect_success 'start --scheduler=<scheduler>' '
650666
test_expect_code 129 git maintenance start --scheduler=foo 2>err &&
651667
test_grep "unrecognized --scheduler argument" err &&

0 commit comments

Comments
 (0)