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`
This commit is contained in:
Taylor Blau
2024-10-18 13:56:26 -04:00
2 changed files with 21 additions and 2 deletions

View File

@ -1832,7 +1832,7 @@ static const char *get_extra_launchctl_strings(void) {
* | Input | Output |
* | *cmd | return code | *out | *is_available |
* +-------+-------------+-------------------+---------------+
* | "foo" | false | NULL | (unchanged) |
* | "foo" | false | "foo" (allocated) | (unchanged) |
* +-------+-------------+-------------------+---------------+
*
* 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)
struct string_list_item *item;
struct string_list list = STRING_LIST_INIT_NODUP;
if (!testing)
if (!testing) {
if (out)
*out = xstrdup(cmd);
return 0;
}
if (is_available)
*is_available = 0;

View File

@ -646,6 +646,22 @@ test_expect_success !MINGW 'register and unregister with regex metacharacters' '
maintenance.repo "$(pwd)/$META"
'
test_expect_success 'start without GIT_TEST_MAINT_SCHEDULER' '
test_when_finished "rm -rf systemctl.log script repo" &&
mkdir script &&
write_script script/systemctl <<-\EOF &&
echo "$*" >>../systemctl.log
EOF
git init repo &&
(
cd repo &&
sane_unset GIT_TEST_MAINT_SCHEDULER &&
PATH="$PWD/../script:$PATH" git maintenance start --scheduler=systemd
) &&
test_grep -- "--user list-timers" systemctl.log &&
test_grep -- "enable --now git-maintenance@" systemctl.log
'
test_expect_success 'start --scheduler=<scheduler>' '
test_expect_code 129 git maintenance start --scheduler=foo 2>err &&
test_grep "unrecognized --scheduler argument" err &&