diff options
author | Tiago Cunha <tcunha@gmx.com> | 2012-01-29 12:53:33 +0000 |
---|---|---|
committer | Tiago Cunha <tcunha@gmx.com> | 2012-01-29 12:53:33 +0000 |
commit | e23df3af5a57d28ba40b14db1ad6d62f0ee99940 (patch) | |
tree | a70888bbd92b8586121eeac1a508b9f08cb2a91d | |
parent | 9c1d3046cac8b999e0b2be4bc0f126bd889ea1c1 (diff) | |
download | rtmux-e23df3af5a57d28ba40b14db1ad6d62f0ee99940.tar.gz rtmux-e23df3af5a57d28ba40b14db1ad6d62f0ee99940.tar.bz2 rtmux-e23df3af5a57d28ba40b14db1ad6d62f0ee99940.zip |
Sync OpenBSD patchset 1014:
Call bufferevent_free before closing file descriptor associated with it
or bugs in $EventMechanism on $OtherOS makes libevent get it's knickers
in a twist. From Dylan Alex Simon.
-rw-r--r-- | job.c | 4 | ||||
-rw-r--r-- | server-client.c | 12 | ||||
-rw-r--r-- | server-fn.c | 2 | ||||
-rw-r--r-- | window.c | 6 |
4 files changed, 12 insertions, 12 deletions
@@ -123,10 +123,10 @@ job_free(struct job *job) if (job->pid != -1) kill(job->pid, SIGTERM); - if (job->fd != -1) - close(job->fd); if (job->event != NULL) bufferevent_free(job->event); + if (job->fd != -1) + close(job->fd); xfree(job); } diff --git a/server-client.c b/server-client.c index 61b864b7..6d485ae1 100644 --- a/server-client.c +++ b/server-client.c @@ -123,24 +123,24 @@ server_client_lost(struct client *c) if (c->flags & CLIENT_TERMINAL) tty_free(&c->tty); + if (c->stdin_event != NULL) + bufferevent_free(c->stdin_event); if (c->stdin_fd != -1) { setblocking(c->stdin_fd, 1); close(c->stdin_fd); } - if (c->stdin_event != NULL) - bufferevent_free(c->stdin_event); + if (c->stdout_event != NULL) + bufferevent_free(c->stdout_event); if (c->stdout_fd != -1) { setblocking(c->stdout_fd, 1); close(c->stdout_fd); } - if (c->stdout_event != NULL) - bufferevent_free(c->stdout_event); + if (c->stderr_event != NULL) + bufferevent_free(c->stderr_event); if (c->stderr_fd != -1) { setblocking(c->stderr_fd, 1); close(c->stderr_fd); } - if (c->stderr_event != NULL) - bufferevent_free(c->stderr_event); status_free_jobs(&c->status_new); status_free_jobs(&c->status_old); diff --git a/server-fn.c b/server-fn.c index eb54b679..1de34fd1 100644 --- a/server-fn.c +++ b/server-fn.c @@ -337,8 +337,8 @@ server_destroy_pane(struct window_pane *wp) old_fd = wp->fd; if (wp->fd != -1) { - close(wp->fd); bufferevent_free(wp->event); + close(wp->fd); wp->fd = -1; } @@ -608,8 +608,8 @@ window_pane_destroy(struct window_pane *wp) window_pane_reset_mode(wp); if (wp->fd != -1) { - close(wp->fd); bufferevent_free(wp->event); + close(wp->fd); } input_free(wp); @@ -619,8 +619,8 @@ window_pane_destroy(struct window_pane *wp) grid_destroy(wp->saved_grid); if (wp->pipe_fd != -1) { - close(wp->pipe_fd); bufferevent_free(wp->pipe_event); + close(wp->pipe_fd); } RB_REMOVE(window_pane_tree, &all_window_panes, wp); @@ -644,8 +644,8 @@ window_pane_spawn(struct window_pane *wp, const char *cmd, const char *shell, struct termios tio2; if (wp->fd != -1) { - close(wp->fd); bufferevent_free(wp->event); + close(wp->fd); } if (cmd != NULL) { if (wp->cmd != NULL) |