From f751d3f2c16493cef5e9a6b27fdce7ea0e713f34 Mon Sep 17 00:00:00 2001 From: nicm Date: Mon, 27 Jul 2026 14:25:46 +0000 Subject: [PATCH] When destroying pane, also close pipe and destroy its event. GitHub issue 5424. --- cmd-pipe-pane.c | 8 ++++++-- server-fn.c | 8 +++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/cmd-pipe-pane.c b/cmd-pipe-pane.c index f18added6..9e04b478b 100644 --- a/cmd-pipe-pane.c +++ b/cmd-pipe-pane.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-pipe-pane.c,v 1.63 2026/04/28 08:47:55 nicm Exp $ */ +/* $OpenBSD: cmd-pipe-pane.c,v 1.64 2026/07/27 14:25:46 nicm Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott @@ -195,9 +195,13 @@ static void cmd_pipe_pane_read_callback(__unused struct bufferevent *bufev, void *data) { struct window_pane *wp = data; - struct evbuffer *evb = wp->pipe_event->input; + struct evbuffer *evb; size_t available; + if (wp->pipe_event == NULL) + return; + evb = wp->pipe_event->input; + available = EVBUFFER_LENGTH(evb); log_debug("%%%u pipe read %zu", wp->id, available); diff --git a/server-fn.c b/server-fn.c index 70e01860c..149d048ad 100644 --- a/server-fn.c +++ b/server-fn.c @@ -1,4 +1,4 @@ -/* $OpenBSD: server-fn.c,v 1.148 2026/07/14 19:07:03 nicm Exp $ */ +/* $OpenBSD: server-fn.c,v 1.149 2026/07/27 14:25:46 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -368,6 +368,12 @@ server_destroy_pane(struct window_pane *wp, int notify) close(wp->fd); wp->fd = -1; } + if (wp->pipe_fd != -1) { + bufferevent_free(wp->pipe_event); + wp->pipe_event = NULL; + close(wp->pipe_fd); + wp->pipe_fd = -1; + } remain_on_exit = options_get_number(wp->options, "remain-on-exit"); if (remain_on_exit != 0 && (~wp->flags & PANE_STATUSREADY))