#! /bin/sh /usr/share/dpatch/dpatch-run ## bts594549-pager-segfault.dpatch by Jonas Fonseca ## ## DP: Fix segfault when starting tig in pager mode. ## DP: ## DP: (Upstream commit 5355b6ed446a22714d944c316f3c037348f67d76) @DPATCH@ diff a/tig.c b/tig.c --- a/tig.c +++ b/tig.c @@ -2308,7 +2308,7 @@ VIEW_(BLAME, "blame", &blame_ops, TRUE, ref_commit), VIEW_(BRANCH, "branch", &branch_ops, TRUE, ref_head), VIEW_(HELP, "help", &help_ops, FALSE, ""), - VIEW_(PAGER, "pager", &pager_ops, FALSE, "stdin"), + VIEW_(PAGER, "pager", &pager_ops, FALSE, ""), VIEW_(STATUS, "status", &status_ops, TRUE, ""), VIEW_(STAGE, "stage", &stage_ops, TRUE, ""), }; @@ -3700,6 +3700,13 @@ break; case REQ_VIEW_PAGER: + if (view == NULL) { + if (!io_open(&VIEW(REQ_VIEW_PAGER)->io, "")) + die("Failed to open stdin"); + open_view(view, request, OPEN_PREPARED); + break; + } + if (!VIEW(REQ_VIEW_PAGER)->pipe && !VIEW(REQ_VIEW_PAGER)->lines) { report("No pager content, press %s to run command from prompt", get_key(view->keymap, REQ_PROMPT)); @@ -7729,10 +7736,8 @@ const char **filter_argv = NULL; int i; - if (!isatty(STDIN_FILENO)) { - io_open(&VIEW(REQ_VIEW_PAGER)->io, ""); + if (!isatty(STDIN_FILENO)) return REQ_VIEW_PAGER; - } if (argc <= 1) return REQ_VIEW_MAIN;