summaryrefslogtreecommitdiff
path: root/usr.bin
diff options
context:
space:
mode:
authorNicholas Marriott <nicm@cvs.openbsd.org>2023-12-27 20:13:36 +0000
committerNicholas Marriott <nicm@cvs.openbsd.org>2023-12-27 20:13:36 +0000
commitcbe06acac354f8801f0f1dfd241a983570c68c6c (patch)
treec02c1167511b7ca354596bc6e74d1e697e0b6888 /usr.bin
parente17c38e0820f640c93a2744aaf6a47c29bf7fe6c (diff)
Correctly handle window ops with no pane, GitHub issue 3747.
Diffstat (limited to 'usr.bin')
-rw-r--r--usr.bin/tmux/input.c26
1 files changed, 19 insertions, 7 deletions
diff --git a/usr.bin/tmux/input.c b/usr.bin/tmux/input.c
index b6396a9cb21..3679cadac3d 100644
--- a/usr.bin/tmux/input.c
+++ b/usr.bin/tmux/input.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: input.c,v 1.222 2023/09/15 06:31:49 nicm Exp $ */
+/* $OpenBSD: input.c,v 1.223 2023/12/27 20:13:35 nicm Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -1846,10 +1846,13 @@ input_csi_dispatch_winops(struct input_ctx *ictx)
struct screen_write_ctx *sctx = &ictx->ctx;
struct screen *s = sctx->s;
struct window_pane *wp = ictx->wp;
- struct window *w = wp->window;
+ struct window *w = NULL;
u_int x = screen_size_x(s), y = screen_size_y(s);
int n, m;
+ if (wp != NULL)
+ w = wp->window;
+
m = 0;
while ((n = input_get(ictx, m, 0, -1)) != -1) {
switch (n) {
@@ -1878,13 +1881,22 @@ input_csi_dispatch_winops(struct input_ctx *ictx)
return;
break;
case 14:
- input_reply(ictx, "\033[4;%u;%ut", y * w->ypixel, x * w->xpixel);
+ if (w == NULL)
+ break;
+ input_reply(ictx, "\033[4;%u;%ut", y * w->ypixel,
+ x * w->xpixel);
break;
case 15:
- input_reply(ictx, "\033[5;%u;%ut", y * w->ypixel, x * w->xpixel);
+ if (w == NULL)
+ break;
+ input_reply(ictx, "\033[5;%u;%ut", y * w->ypixel,
+ x * w->xpixel);
break;
case 16:
- input_reply(ictx, "\033[6;%u;%ut", w->ypixel, w->xpixel);
+ if (w == NULL)
+ break;
+ input_reply(ictx, "\033[6;%u;%ut", w->ypixel,
+ w->xpixel);
break;
case 18:
input_reply(ictx, "\033[8;%u;%ut", y, x);
@@ -1914,8 +1926,8 @@ input_csi_dispatch_winops(struct input_ctx *ictx)
if (wp == NULL)
break;
notify_pane("pane-title-changed", wp);
- server_redraw_window_borders(wp->window);
- server_status_window(wp->window);
+ server_redraw_window_borders(w);
+ server_status_window(w);
break;
}
break;