Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.kernel.org/pub/scm/git/git.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2021-12-11 01:35:15 +0300
committerJunio C Hamano <gitster@pobox.com>2021-12-11 01:35:15 +0300
commitbb47eee9df438ea1934effb1fb8877deb4852821 (patch)
treebc7340a9e776b7a1c06943508d7c1d7b450a06ff
parent670703e9d667f28221bfaa8baf75e90f0ba5ddca (diff)
parentf917f57f40a22b64ab5354e99dbf32bb48d9fc0a (diff)
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.c4
-rwxr-xr-xt/t7006-pager.sh5
2 files changed, 8 insertions, 1 deletions
diff --git a/pager.c b/pager.c
index 52f27a6765..27877f8ebb 100644
--- a/pager.c
+++ b/pager.c
@@ -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