diff options
-rw-r--r-- | debian/changelog | 13 | ||||
-rw-r--r-- | debian/control | 2 | ||||
-rw-r--r-- | debian/patches/revert-upstream-43e5e80343.diff | 79 | ||||
-rw-r--r-- | debian/patches/series | 3 | ||||
-rw-r--r-- | debian/patches/upstream-3823fa2c57.diff | 29 | ||||
-rw-r--r-- | debian/patches/upstream-424f13fe13.diff | 20 |
6 files changed, 145 insertions, 1 deletions
diff --git a/debian/changelog b/debian/changelog index 1111ec4..0f5cf73 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,16 @@ +tmux (3.4-5) unstable; urgency=medium + + * Cherry-pick more upstream fixes: + + 3823fa2c57: start systemd scope with SendSIGHUP=yes to prevent hang + on system shutdown. + + 424f13fe13: don't crash server when calling switch-client from + pane-died hook. + * Revert upstream commit 43e5e80343 which breaks search of wrapped lines. + * Version build-dependency on libncurses-dev to ensure we pick up updated + symbol versions for ncurses 6.5. + + -- Romain Francoise <rfrancoise@debian.org> Thu, 09 May 2024 17:43:16 +0200 + tmux (3.4-4) unstable; urgency=medium * Add tmpfiles.d configuration file to prevent automatic removal of tmux diff --git a/debian/control b/debian/control index 35352ce..8dd6653 100644 --- a/debian/control +++ b/debian/control @@ -7,7 +7,7 @@ Build-Depends: bison, debianutils (>= 5.3-1~), dpkg-dev (>= 1.16.1~), libevent-dev (>> 2.0.10), - libncurses-dev, + libncurses-dev (>> 6.5), libsystemd-dev [linux-any], libutempter-dev, libutil-freebsd-dev [kfreebsd-any], diff --git a/debian/patches/revert-upstream-43e5e80343.diff b/debian/patches/revert-upstream-43e5e80343.diff new file mode 100644 index 0000000..32f91f1 --- /dev/null +++ b/debian/patches/revert-upstream-43e5e80343.diff @@ -0,0 +1,79 @@ +commit 0f5e175cc8df8c047348c06cbc48f664682b58a3 +Author: Romain Francoise <rfrancoise@debian.org> +Date: Thu May 9 17:19:43 2024 +0200 +Forwarded: not-needed + + Revert "Skip wrapped lines in top level search loop because they will be" + + This reverts commit 43e5e80343185e69a1b864fc48095ede0b898180. + +diff --git a/window-copy.c b/window-copy.c +index a1f18476ad..e5bd3ec10c 100644 +--- a/window-copy.c ++++ b/window-copy.c +@@ -295,7 +295,6 @@ struct window_copy_mode_data { + int timeout; /* search has timed out */ + #define WINDOW_COPY_SEARCH_TIMEOUT 10000 + #define WINDOW_COPY_SEARCH_ALL_TIMEOUT 200 +-#define WINDOW_COPY_SEARCH_MAX_LINE 2000 + + int jumptype; + struct utf8_data *jumpchar; +@@ -3214,9 +3213,7 @@ window_copy_search_lr_regex(struct grid *gd, u_int *ppx, u_int *psx, u_int py, + len = gd->sx - first; + endline = gd->hsize + gd->sy - 1; + pywrap = py; +- while (buf != NULL && +- pywrap <= endline && +- len < WINDOW_COPY_SEARCH_MAX_LINE) { ++ while (buf != NULL && pywrap <= endline) { + gl = grid_get_line(gd, pywrap); + if (~gl->flags & GRID_LINE_WRAPPED) + break; +@@ -3273,9 +3270,7 @@ window_copy_search_rl_regex(struct grid *gd, u_int *ppx, u_int *psx, u_int py, + len = gd->sx - first; + endline = gd->hsize + gd->sy - 1; + pywrap = py; +- while (buf != NULL && +- pywrap <= endline && +- len < WINDOW_COPY_SEARCH_MAX_LINE) { ++ while (buf != NULL && (pywrap <= endline)) { + gl = grid_get_line(gd, pywrap); + if (~gl->flags & GRID_LINE_WRAPPED) + break; +@@ -3614,11 +3609,10 @@ window_copy_search_jump(struct window_mode_entry *wme, struct grid *gd, + struct grid *sgd, u_int fx, u_int fy, u_int endline, int cis, int wrap, + int direction, int regex) + { +- u_int i, px, sx, ssize = 1; +- int found = 0, cflags = REG_EXTENDED; +- char *sbuf; +- regex_t reg; +- struct grid_line *gl; ++ u_int i, px, sx, ssize = 1; ++ int found = 0, cflags = REG_EXTENDED; ++ char *sbuf; ++ regex_t reg; + + if (regex) { + sbuf = xmalloc(ssize); +@@ -3635,9 +3629,6 @@ window_copy_search_jump(struct window_mode_entry *wme, struct grid *gd, + + if (direction) { + for (i = fy; i <= endline; i++) { +- gl = grid_get_line(gd, i); +- if (i != endline && gl->flags & GRID_LINE_WRAPPED) +- continue; + if (regex) { + found = window_copy_search_lr_regex(gd, + &px, &sx, i, fx, gd->sx, ®); +@@ -3651,9 +3642,6 @@ window_copy_search_jump(struct window_mode_entry *wme, struct grid *gd, + } + } else { + for (i = fy + 1; endline < i; i--) { +- gl = grid_get_line(gd, i - 1); +- if (i != endline && gl->flags & GRID_LINE_WRAPPED) +- continue; + if (regex) { + found = window_copy_search_rl_regex(gd, + &px, &sx, i - 1, 0, fx + 1, ®); diff --git a/debian/patches/series b/debian/patches/series index c87bbc1..801328d 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1,4 +1,7 @@ platform-quirks.diff +revert-upstream-43e5e80343.diff upstream-bd29a48b56.diff upstream-6c0067c103.diff upstream-aa17f0e0c1.diff +upstream-3823fa2c57.diff +upstream-424f13fe13.diff diff --git a/debian/patches/upstream-3823fa2c57.diff b/debian/patches/upstream-3823fa2c57.diff new file mode 100644 index 0000000..09f6dc2 --- /dev/null +++ b/debian/patches/upstream-3823fa2c57.diff @@ -0,0 +1,29 @@ +commit 3823fa2c577d440649a84af660e4d3b0c095d248 +Author: Nicholas Marriott <nicholas.marriott@gmail.com> +Date: Tue Apr 30 12:38:58 2024 +0100 + + Send SIGHUP since some programs ignore SIGTERM, from Eduardo Grajeda in GitHub + issue 3958. + +diff --git a/compat/systemd.c b/compat/systemd.c +index 063474e3dd..bde372ccab 100644 +--- a/compat/systemd.c ++++ b/compat/systemd.c +@@ -144,6 +144,17 @@ systemd_move_pid_to_new_cgroup(pid_t pid, char **cause) + goto finish; + } + ++ /* ++ * Make sure that the session shells are terminated with SIGHUP since ++ * bash and friends tend to ignore SIGTERM. ++ */ ++ r = sd_bus_message_append(m, "(sv)", "SendSIGHUP", "b", 1); ++ if (r < 0) { ++ xasprintf(cause, "failed to append to properties: %s", ++ strerror(-r)); ++ goto finish; ++ } ++ + /* + * Inherit the slice from the parent process, or default to + * "app-tmux.slice" if that fails. diff --git a/debian/patches/upstream-424f13fe13.diff b/debian/patches/upstream-424f13fe13.diff new file mode 100644 index 0000000..8a9fa24 --- /dev/null +++ b/debian/patches/upstream-424f13fe13.diff @@ -0,0 +1,20 @@ +commit 424f13fe13036e75b1c80e7751b81529f4cd8e15 +Author: Nicholas Marriott <nicholas.marriott@gmail.com> +Date: Wed Apr 10 07:15:21 2024 +0000 + + Do not get muddled and crash if focusing a pane that is exiting, + reported by Saul Nogueras in GitHub issue 3776. + +diff --git a/window.c b/window.c +index 43c272bc8e..d53c606e07 100644 +--- a/window.c ++++ b/window.c +@@ -474,7 +474,7 @@ window_pane_update_focus(struct window_pane *wp) + struct client *c; + int focused = 0; + +- if (wp != NULL) { ++ if (wp != NULL && (~wp->flags & PANE_EXITED)) { + if (wp != wp->window->active) + focused = 0; + else { |