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.
This commit is contained in:
Nicholas Marriott
2010-12-20 00:03:55 +00:00
parent c65d4220f0
commit a51dcdc430
5 changed files with 43 additions and 17 deletions

View File

@ -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 (!session_alive(s))
return;
if (cdata->client->flags & CLIENT_DEAD)
return;
if (cdata->session->flags & SESSION_DEAD)
return;
if (cdata->client->session != cdata->session)
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);