From 64d16cf2d67c42642401cd0bbaeb278a1c00822a Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Wed, 22 Dec 2010 15:28:51 +0000 Subject: Sync OpenBSD patchset 801: Unify the way sessions are used by callbacks - store the address and use the reference count, then check it is still on the global sessions list in the callback. --- cmd-choose-window.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) (limited to 'cmd-choose-window.c') diff --git a/cmd-choose-window.c b/cmd-choose-window.c index 39608916..1f392216 100644 --- a/cmd-choose-window.c +++ b/cmd-choose-window.c @@ -1,4 +1,4 @@ -/* $Id: cmd-choose-window.c,v 1.23 2010-12-06 22:52:20 nicm Exp $ */ +/* $Id: cmd-choose-window.c,v 1.24 2010-12-22 15:28:50 tcunha Exp $ */ /* * Copyright (c) 2009 Nicholas Marriott @@ -129,20 +129,19 @@ void cmd_choose_window_callback(void *data, int idx) { struct cmd_choose_window_data *cdata = data; + struct session *s = cdata->session; struct cmd_list *cmdlist; struct cmd_ctx ctx; char *target, *template, *cause; if (idx == -1) return; - if (cdata->client->flags & CLIENT_DEAD) - return; - if (cdata->session->flags & SESSION_DEAD) + if (!session_alive(s)) return; - if (cdata->client->session != cdata->session) + if (cdata->client->flags & CLIENT_DEAD) return; - xasprintf(&target, "%s:%d", cdata->session->name, idx); + xasprintf(&target, "%s:%d", s->name, idx); template = cmd_template_replace(cdata->template, target, 1); xfree(target); -- cgit