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

Diff for /src/usr.bin/tmux/Attic/cmd-choose-session.c between version 1.6 and 1.7

version 1.6, 2009/08/25 13:32:14 version 1.7, 2009/09/07 21:01:50
Line 43 
Line 43 
 };  };
   
 struct cmd_choose_session_data {  struct cmd_choose_session_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("switch-client -t '%%'");                  cdata->template = xstrdup("switch-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_session_callback, cmd_choose_session_free, cdata);              cur, cmd_choose_session_callback, cmd_choose_session_free, cdata);
Line 99 
Line 100 
 cmd_choose_session_callback(void *data, int idx)  cmd_choose_session_callback(void *data, int idx)
 {  {
         struct cmd_choose_session_data  *cdata = data;          struct cmd_choose_session_data  *cdata = data;
         struct client                   *c;  
         struct session                  *s;          struct session                  *s;
         struct cmd_list                 *cmdlist;          struct cmd_list                 *cmdlist;
         struct cmd_ctx                   ctx;          struct cmd_ctx                   ctx;
Line 107 
Line 107 
   
         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(&sessions) - 1)          if ((u_int) idx > ARRAY_LENGTH(&sessions) - 1)
                 return;                  return;
Line 121 
Line 120 
         if (cmd_string_parse(template, &cmdlist, &cause) != 0) {          if (cmd_string_parse(template, &cmdlist, &cause) != 0) {
                 if (cause != NULL) {                  if (cause != NULL) {
                         *cause = toupper((u_char) *cause);                          *cause = toupper((u_char) *cause);
                         status_message_set(c, "%s", cause);                          status_message_set(cdata->client, "%s", cause);
                         xfree(cause);                          xfree(cause);
                 }                  }
                 xfree(template);                  xfree(template);
Line 130 
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 147 
Line 146 
 {  {
         struct cmd_choose_session_data  *cdata = data;          struct cmd_choose_session_data  *cdata = data;
   
           cdata->client->references--;
         xfree(cdata->template);          xfree(cdata->template);
         xfree(cdata);          xfree(cdata);
 }  }

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7