From ba9faae8b62d80f9da62696800814cf6591957d1 Mon Sep 17 00:00:00 2001 From: nicm Date: Wed, 24 Jun 2026 21:10:05 +0000 Subject: [PATCH] Free modes rather than going through reset when pane is destroyed as the reset path may try to destroy the pane again. --- window.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/window.c b/window.c index 9759d78a6..8a388001a 100644 --- a/window.c +++ b/window.c @@ -1127,13 +1127,28 @@ window_pane_wait_finish(struct window_pane *wp) cmdq_continue(item); } +static void +window_pane_free_modes(struct window_pane *wp) +{ + struct window_mode_entry *wme; + + while (!TAILQ_EMPTY(&wp->modes)) { + wme = TAILQ_FIRST(&wp->modes); + TAILQ_REMOVE(&wp->modes, wme, entry); + wme->mode->free(wme); + free(wme); + } + + wp->screen = &wp->base; +} + static void window_pane_destroy(struct window_pane *wp) { window_pane_wait_finish(wp); spawn_editor_finish(wp); - window_pane_reset_mode_all(wp); + window_pane_free_modes(wp); free(wp->searchstr); if (wp->fd != -1) {