diff options
author | Junio C Hamano <gitster@pobox.com> | 2021-12-10 14:35:15 -0800 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2021-12-10 14:35:15 -0800 |
commit | bb47eee9df438ea1934effb1fb8877deb4852821 (patch) | |
tree | bc7340a9e776b7a1c06943508d7c1d7b450a06ff | |
parent | Merge branch 'mp/absorb-submodule-git-dir-upon-deinit' (diff) | |
parent | pager: fix crash when pager program doesn't exist (diff) | |
download | tgif-bb47eee9df438ea1934effb1fb8877deb4852821.tar.xz |
Merge branch 'em/missing-pager'
When a non-existent program is given as the pager, we tried to
reuse an uninitialized child_process structure and crashed, which
has been fixed.
* em/missing-pager:
pager: fix crash when pager program doesn't exist
-rw-r--r-- | pager.c | 4 | ||||
-rwxr-xr-x | t/t7006-pager.sh | 5 |
2 files changed, 8 insertions, 1 deletions
@@ -8,7 +8,7 @@ #define DEFAULT_PAGER "less" #endif -static struct child_process pager_process = CHILD_PROCESS_INIT; +static struct child_process pager_process; static const char *pager_program; /* Is the value coming back from term_columns() just a guess? */ @@ -124,6 +124,8 @@ void setup_pager(void) setenv("GIT_PAGER_IN_USE", "true", 1); + child_process_init(&pager_process); + /* spawn the pager */ prepare_pager_args(&pager_process, pager); pager_process.in = -1; diff --git a/t/t7006-pager.sh b/t/t7006-pager.sh index a87ef37803..e56ca5b0fa 100755 --- a/t/t7006-pager.sh +++ b/t/t7006-pager.sh @@ -760,4 +760,9 @@ test_expect_success TTY 'git returns SIGPIPE on propagated signals from pager' ' test_path_is_file pager-used ' +test_expect_success TTY 'non-existent pager doesnt cause crash' ' + test_config pager.show invalid-pager && + test_terminal git show +' + test_done |