Unzoom window at start of destroy so it doesn't happen later (when
authornicm <nicm@openbsd.org>
Mon, 23 Oct 2023 08:12:00 +0000 (08:12 +0000)
committernicm <nicm@openbsd.org>
Mon, 23 Oct 2023 08:12:00 +0000 (08:12 +0000)
destroying panes) after the layout has been freed, GitHub issue 3717.

usr.bin/tmux/screen-write.c
usr.bin/tmux/window.c

index 08d6438..45b36c8 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: screen-write.c,v 1.222 2023/09/15 15:49:05 nicm Exp $ */
+/* $OpenBSD: screen-write.c,v 1.223 2023/10/23 08:12:00 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -2013,7 +2013,7 @@ screen_write_combine(struct screen_write_ctx *ctx, const struct grid_cell *gc)
 
        /*
         * Check if we need to combine characters. This could be zero width
-        * (zet above), a modifier character (with an existing Unicode
+        * (set above), a modifier character (with an existing Unicode
         * character) or a previous ZWJ.
         */
        if (!zero_width) {
index f2e7d3d..ef86f43 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: window.c,v 1.286 2023/07/10 09:24:53 nicm Exp $ */
+/* $OpenBSD: window.c,v 1.287 2023/10/23 08:12:00 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -340,6 +340,7 @@ window_destroy(struct window *w)
 {
        log_debug("window @%u destroyed (%d references)", w->id, w->references);
 
+       window_unzoom(w);
        RB_REMOVE(windows, &windows, w);
 
        if (w->layout_root != NULL)