[BACK]Return to cmd-choose-client.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/Attic/cmd-choose-client.c between version 1.2 and 1.3

version 1.2, 2009/08/25 13:32:14 version 1.3, 2009/09/07 21:01:50
Line 43 
Line 43 
 };  };
   
 struct cmd_choose_client_data {  struct cmd_choose_client_data {
         u_int            client;          struct client   *client;
         char            *template;          char            *template;
 };  };
   
Line 87 
Line 87 
                 cdata->template = xstrdup(data->arg);                  cdata->template = xstrdup(data->arg);
         else          else
                 cdata->template = xstrdup("detach-client -t '%%'");                  cdata->template = xstrdup("detach-client -t '%%'");
         cdata->client = server_client_index(ctx->curclient);          cdata->client = ctx->curclient;
           cdata->client->references++;
   
         window_choose_ready(wl->window->active,          window_choose_ready(wl->window->active,
             cur, cmd_choose_client_callback, cmd_choose_client_free, cdata);              cur, cmd_choose_client_callback, cmd_choose_client_free, cdata);
Line 99 
Line 100 
 cmd_choose_client_callback(void *data, int idx)  cmd_choose_client_callback(void *data, int idx)
 {  {
         struct cmd_choose_client_data   *cdata = data;          struct cmd_choose_client_data   *cdata = data;
         struct client                   *c, *c2;          struct client                   *c;
         struct cmd_list                 *cmdlist;          struct cmd_list                 *cmdlist;
         struct cmd_ctx                   ctx;          struct cmd_ctx                   ctx;
         char                            *template, *cause;          char                            *template, *cause;
   
         if (idx == -1)          if (idx == -1)
                 return;                  return;
         if (cdata->client > ARRAY_LENGTH(&clients) - 1)          if (cdata->client->flags & CLIENT_DEAD)
                 return;                  return;
         c = ARRAY_ITEM(&clients, cdata->client);  
   
         if ((u_int) idx > ARRAY_LENGTH(&clients) - 1)          if ((u_int) idx > ARRAY_LENGTH(&clients) - 1)
                 return;                  return;
         c2 = ARRAY_ITEM(&clients, idx);          c = ARRAY_ITEM(&clients, idx);
         if (c2 == NULL || c2->session == NULL)          if (c == NULL || c->session == NULL)
                 return;                  return;
         template = cmd_template_replace(cdata->template, c2->tty.path, 1);          template = cmd_template_replace(cdata->template, c->tty.path, 1);
   
         if (cmd_string_parse(template, &cmdlist, &cause) != 0) {          if (cmd_string_parse(template, &cmdlist, &cause) != 0) {
                 if (cause != NULL) {                  if (cause != NULL) {
Line 129 
Line 129 
         xfree(template);          xfree(template);
   
         ctx.msgdata = NULL;          ctx.msgdata = NULL;
         ctx.curclient = c;          ctx.curclient = cdata->client;
   
         ctx.error = key_bindings_error;          ctx.error = key_bindings_error;
         ctx.print = key_bindings_print;          ctx.print = key_bindings_print;
Line 146 
Line 146 
 {  {
         struct cmd_choose_client_data   *cdata = data;          struct cmd_choose_client_data   *cdata = data;
   
           cdata->client->references--;
         xfree(cdata->template);          xfree(cdata->template);
         xfree(cdata);          xfree(cdata);
 }  }

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3