diff options
author | Thomas Adam <thomas@xteddy.org> | 2017-07-03 16:01:14 +0100 |
---|---|---|
committer | Thomas Adam <thomas@xteddy.org> | 2017-07-03 16:01:14 +0100 |
commit | 5e98770936f87e670556ea0841af5d4e6214ae73 (patch) | |
tree | 9297133f460540299b769b06d056403399ef5ec8 /window.c | |
parent | 4e01036cb67e4c9297f7e220e575b52b13252352 (diff) | |
parent | 6ee0afb579fc09cd36058b993f45eb2577a80e76 (diff) | |
download | rtmux-5e98770936f87e670556ea0841af5d4e6214ae73.tar.gz rtmux-5e98770936f87e670556ea0841af5d4e6214ae73.tar.bz2 rtmux-5e98770936f87e670556ea0841af5d4e6214ae73.zip |
Merge branch 'obsd-master'
Diffstat (limited to 'window.c')
-rw-r--r-- | window.c | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -390,13 +390,17 @@ window_destroy(struct window *w) int window_pane_destroy_ready(struct window_pane *wp) { - if (wp->pipe_fd != -1 && EVBUFFER_LENGTH(wp->pipe_event->output) != 0) - return (0); + int n; + + if (wp->pipe_fd != -1) { + if (EVBUFFER_LENGTH(wp->pipe_event->output) != 0) + return (0); + if (ioctl(wp->fd, FIONREAD, &n) != -1 && n > 0) + return (0); + } if (~wp->flags & PANE_EXITED) return (0); - if (~wp->flags & PANE_ERROR) - return (0); return (1); } @@ -1028,7 +1032,7 @@ window_pane_error_callback(__unused struct bufferevent *bufev, struct window_pane *wp = data; log_debug("%%%u error", wp->id); - wp->flags |= PANE_ERROR; + wp->flags |= PANE_EXITED; if (window_pane_destroy_ready(wp)) server_destroy_pane(wp, 1); |