mirror of
https://github.com/tmux/tmux.git
synced 2024-12-25 02:48:47 +00:00
Do not call recalculate_sizes while clearing a client session because it
needs to loop over the clients, instead do it after all clients are cleared. Fixes a crash reported by martijn@ when a session with multiple clients attached is destroyed, but there are other sessions so tmux does not entirely exit. ok deraadt
This commit is contained in:
parent
257e9ba69a
commit
68c8905859
@ -321,11 +321,11 @@ server_client_set_session(struct client *c, struct session *s)
|
|||||||
c->last_session = NULL;
|
c->last_session = NULL;
|
||||||
c->session = s;
|
c->session = s;
|
||||||
c->flags |= CLIENT_FOCUSED;
|
c->flags |= CLIENT_FOCUSED;
|
||||||
recalculate_sizes();
|
|
||||||
|
|
||||||
if (old != NULL && old->curw != NULL)
|
if (old != NULL && old->curw != NULL)
|
||||||
window_update_focus(old->curw->window);
|
window_update_focus(old->curw->window);
|
||||||
if (s != NULL) {
|
if (s != NULL) {
|
||||||
|
recalculate_sizes();
|
||||||
window_update_focus(s->curw->window);
|
window_update_focus(s->curw->window);
|
||||||
session_update_activity(s, NULL);
|
session_update_activity(s, NULL);
|
||||||
gettimeofday(&s->last_attached_time, NULL);
|
gettimeofday(&s->last_attached_time, NULL);
|
||||||
@ -2057,6 +2057,7 @@ server_client_dispatch(struct imsg *imsg, void *arg)
|
|||||||
if (datalen != 0)
|
if (datalen != 0)
|
||||||
fatalx("bad MSG_EXITING size");
|
fatalx("bad MSG_EXITING size");
|
||||||
server_client_set_session(c, NULL);
|
server_client_set_session(c, NULL);
|
||||||
|
recalculate_sizes();
|
||||||
tty_close(&c->tty);
|
tty_close(&c->tty);
|
||||||
proc_send(c->peer, MSG_EXITED, -1, NULL, 0);
|
proc_send(c->peer, MSG_EXITED, -1, NULL, 0);
|
||||||
break;
|
break;
|
||||||
|
Loading…
Reference in New Issue
Block a user