When `remain-on-exit' is set and the terminal supports focus reporting,
tmux 1.8 sometimes crashes because it uses the bufferevent of a dead pane
in server_client_check_focus().

There's already a check in server_client_check_resize(), so just move it
to the caller loop to handle both cases at the same time.

diff --git a/server-client.c b/server-client.c
index 8463329..1c15a55 100644
--- a/server-client.c
+++ b/server-client.c
@@ -514,8 +514,10 @@ server_client_loop(void)
 
                w->flags &= ~WINDOW_REDRAW;
                TAILQ_FOREACH(wp, &w->panes, entry) {
-                       server_client_check_focus(wp);
-                       server_client_check_resize(wp);
+                       if (wp->fd != -1) {
+                               server_client_check_focus(wp);
+                               server_client_check_resize(wp);
+                       }
                        wp->flags &= ~PANE_REDRAW;
                }
        }
@@ -527,7 +529,7 @@ server_client_check_resize(struct window_pane *wp)
 {
        struct winsize  ws;
 
-       if (wp->fd == -1 || !(wp->flags & PANE_RESIZE))
+       if (!(wp->flags & PANE_RESIZE))
                return;
 
        memset(&ws, 0, sizeof ws);

------------------------------------------------------------------------------
Precog is a next-generation analytics platform capable of advanced
analytics on semi-structured data. The platform includes APIs for building
apps and a phenomenal toolset for data science. Developers can use
our toolset for easy data analysis & visualization. Get a free account!
http://www2.precog.com/precogplatform/slashdotnewsletter
_______________________________________________
tmux-users mailing list
tmux-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-users

Reply via email to