Fix a crash: if remain-on-exit is set and the pane has exited, the
authornicm <nicm@openbsd.org>
Thu, 22 Jul 2010 21:10:51 +0000 (21:10 +0000)
committernicm <nicm@openbsd.org>
Thu, 22 Jul 2010 21:10:51 +0000 (21:10 +0000)
buffers may not be valid, so do not try to disable/enable them when
switching to copy mode.

usr.bin/tmux/window-copy.c

index 97b71af..55da499 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: window-copy.c,v 1.60 2010/06/29 05:24:49 tedu Exp $ */
+/* $OpenBSD: window-copy.c,v 1.61 2010/07/22 21:10:51 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -171,7 +171,8 @@ window_copy_init(struct window_pane *wp)
        data->searchstr = NULL;
 
        wp->flags |= PANE_FREEZE;
-       bufferevent_disable(wp->event, EV_READ|EV_WRITE);
+       if (wp->fd != -1)
+               bufferevent_disable(wp->event, EV_READ|EV_WRITE);
 
        data->jumptype = WINDOW_COPY_OFF;
        data->jumpchar = '\0';
@@ -234,7 +235,8 @@ window_copy_free(struct window_pane *wp)
        struct window_copy_mode_data    *data = wp->modedata;
 
        wp->flags &= ~PANE_FREEZE;
-       bufferevent_enable(wp->event, EV_READ|EV_WRITE);
+       if (wp->fd != -1)
+               bufferevent_enable(wp->event, EV_READ|EV_WRITE);
 
        if (data->searchstr != NULL)
                xfree(data->searchstr);