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

Diff for /src/usr.bin/tmux/cmd-if-shell.c between version 1.30 and 1.31

version 1.30, 2015/04/21 15:18:06 version 1.31, 2015/04/21 21:31:02
Line 51 
Line 51 
         struct mouse_event       mouse;          struct mouse_event       mouse;
   
         int                      bflag;          int                      bflag;
         int                      started;          int                      references;
 };  };
   
 enum cmd_retval  enum cmd_retval
Line 113 
Line 113 
   
         cdata->bflag = args_has(args, 'b');          cdata->bflag = args_has(args, 'b');
   
         cdata->started = 0;  
         cdata->cmdq = cmdq;          cdata->cmdq = cmdq;
         memcpy(&cdata->mouse, &cmdq->item->mouse, sizeof cdata->mouse);          memcpy(&cdata->mouse, &cmdq->item->mouse, sizeof cdata->mouse);
         cmdq->references++;          cmdq->references++;
   
           cdata->references = 1;
         job_run(shellcmd, s, cmd_if_shell_callback, cmd_if_shell_free, cdata);          job_run(shellcmd, s, cmd_if_shell_callback, cmd_if_shell_free, cdata);
         free(shellcmd);          free(shellcmd);
   
Line 152 
Line 152 
                 return;                  return;
         }          }
   
         cdata->started = 1;  
   
         cmdq1 = cmdq_new(cmdq->client);          cmdq1 = cmdq_new(cmdq->client);
         cmdq1->emptyfn = cmd_if_shell_done;          cmdq1->emptyfn = cmd_if_shell_done;
         cmdq1->data = cdata;          cmdq1->data = cdata;
   
           cdata->references++;
         cmdq_run(cmdq1, cmdlist, &cdata->mouse);          cmdq_run(cmdq1, cmdlist, &cdata->mouse);
         cmd_list_free(cmdlist);          cmd_list_free(cmdlist);
 }  }
Line 170 
Line 169 
   
         if (cmdq1->client_exit >= 0)          if (cmdq1->client_exit >= 0)
                 cmdq->client_exit = cmdq1->client_exit;                  cmdq->client_exit = cmdq1->client_exit;
           cmdq_free(cmdq1);
   
           if (--cdata->references != 0)
                   return;
   
         if (!cmdq_free(cmdq) && !cdata->bflag)          if (!cmdq_free(cmdq) && !cdata->bflag)
                 cmdq_continue(cmdq);                  cmdq_continue(cmdq);
   
         cmdq_free(cmdq1);  
   
         free(cdata->cmd_else);          free(cdata->cmd_else);
         free(cdata->cmd_if);          free(cdata->cmd_if);
         free(cdata);          free(cdata);
Line 187 
Line 188 
         struct cmd_if_shell_data        *cdata = data;          struct cmd_if_shell_data        *cdata = data;
         struct cmd_q                    *cmdq = cdata->cmdq;          struct cmd_q                    *cmdq = cdata->cmdq;
   
         if (cdata->started)          if (--cdata->references != 0)
                 return;                  return;
   
         if (!cmdq_free(cmdq) && !cdata->bflag)          if (!cmdq_free(cmdq) && !cdata->bflag)

Legend:
Removed from v.1.30  
changed lines
  Added in v.1.31