diff options
author | nicm <nicm> | 2024-02-13 08:03:50 +0000 |
---|---|---|
committer | nicm <nicm> | 2024-02-13 08:03:50 +0000 |
commit | 4bdb855020d266ea0a480a53e13c806fcaad9b45 (patch) | |
tree | 12c3d3932ac91bacf55700f13a6b403f3e65ec7d | |
parent | 428f8a9b2884093b5f40b64797753871ddfa67b0 (diff) |
Do not allow paste into panes which have exited, from Romain Francoise
in GitHub issue 3830.
-rw-r--r-- | cmd-paste-buffer.c | 5 | ||||
-rw-r--r-- | cmd-pipe-pane.c | 2 | ||||
-rw-r--r-- | tmux.h | 1 | ||||
-rw-r--r-- | window.c | 6 |
4 files changed, 13 insertions, 1 deletions
diff --git a/cmd-paste-buffer.c b/cmd-paste-buffer.c index 28d4a8cc..bef39593 100644 --- a/cmd-paste-buffer.c +++ b/cmd-paste-buffer.c @@ -55,6 +55,11 @@ cmd_paste_buffer_exec(struct cmd *self, struct cmdq_item *item) size_t seplen, bufsize; int bracket = args_has(args, 'p'); + if (window_pane_exited(wp)) { + cmdq_error(item, "target pane has exited"); + return (CMD_RETURN_ERROR); + } + bufname = NULL; if (args_has(args, 'b')) bufname = args_get(args, 'b'); diff --git a/cmd-pipe-pane.c b/cmd-pipe-pane.c index bedc8f24..ec6091ed 100644 --- a/cmd-pipe-pane.c +++ b/cmd-pipe-pane.c @@ -69,7 +69,7 @@ cmd_pipe_pane_exec(struct cmd *self, struct cmdq_item *item) sigset_t set, oldset; /* Do nothing if pane is dead. */ - if (wp->fd == -1 || (wp->flags & PANE_EXITED)) { + if (window_pane_exited(wp)) { cmdq_error(item, "target pane has exited"); return (CMD_RETURN_ERROR); } @@ -3047,6 +3047,7 @@ int window_pane_key(struct window_pane *, struct client *, struct session *, struct winlink *, key_code, struct mouse_event *); int window_pane_visible(struct window_pane *); +int window_pane_exited(struct window_pane *); u_int window_pane_search(struct window_pane *, const char *, int, int); const char *window_printable_flags(struct winlink *, int); @@ -1204,6 +1204,12 @@ window_pane_visible(struct window_pane *wp) return (wp == wp->window->active); } +int +window_pane_exited(struct window_pane *wp) +{ + return (wp->fd == -1 || (wp->flags & PANE_EXITED)); +} + u_int window_pane_search(struct window_pane *wp, const char *term, int regex, int ignore) |