diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2023-12-27 20:13:36 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2023-12-27 20:13:36 +0000 |
commit | cbe06acac354f8801f0f1dfd241a983570c68c6c (patch) | |
tree | c02c1167511b7ca354596bc6e74d1e697e0b6888 /usr.bin | |
parent | e17c38e0820f640c93a2744aaf6a47c29bf7fe6c (diff) |
Correctly handle window ops with no pane, GitHub issue 3747.
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/tmux/input.c | 26 |
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; |