Code

patches: Added bts594549-pager-segfault.
[pkg-tig.git] / debian / patches / bts594549-pager-segfault.dpatch
diff --git a/debian/patches/bts594549-pager-segfault.dpatch b/debian/patches/bts594549-pager-segfault.dpatch
new file mode 100755 (executable)
index 0000000..a28d31a
--- /dev/null
@@ -0,0 +1,47 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## bts594549-pager-segfault.dpatch by Jonas Fonseca <fonseca@diku.dk>
+##
+## 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;