mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:17:31 +00:00 
			
		
		
		
	Make cmdq->client_exit a tristate (-1 means "not set") so that if explicitly
set it can be copied from child to parent cmdq by if-shell and source-file. This fixes using attach or new. From Chris Johnsen.
This commit is contained in:
		@@ -147,6 +147,9 @@ cmd_if_shell_done(struct cmd_q *cmdq1)
 | 
			
		||||
	struct cmd_if_shell_data	*cdata = cmdq1->data;
 | 
			
		||||
	struct cmd_q			*cmdq = cdata->cmdq;
 | 
			
		||||
 | 
			
		||||
	if (cmdq1->client_exit >= 0)
 | 
			
		||||
		cmdq->client_exit = cmdq1->client_exit;
 | 
			
		||||
 | 
			
		||||
	if (!cmdq_free(cmdq) && !cdata->bflag)
 | 
			
		||||
		cmdq_continue(cmdq);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ cmdq_new(struct client *c)
 | 
			
		||||
	cmdq->dead = 0;
 | 
			
		||||
 | 
			
		||||
	cmdq->client = c;
 | 
			
		||||
	cmdq->client_exit = 0;
 | 
			
		||||
	cmdq->client_exit = -1;
 | 
			
		||||
 | 
			
		||||
	TAILQ_INIT(&cmdq->queue);
 | 
			
		||||
	cmdq->item = NULL;
 | 
			
		||||
@@ -259,7 +259,7 @@ cmdq_continue(struct cmd_q *cmdq)
 | 
			
		||||
	} while (cmdq->item != NULL);
 | 
			
		||||
 | 
			
		||||
empty:
 | 
			
		||||
	if (cmdq->client_exit)
 | 
			
		||||
	if (cmdq->client_exit > 0)
 | 
			
		||||
		cmdq->client->flags |= CLIENT_EXIT;
 | 
			
		||||
	if (cmdq->emptyfn != NULL)
 | 
			
		||||
		cmdq->emptyfn(cmdq); /* may free cmdq */
 | 
			
		||||
 
 | 
			
		||||
@@ -95,6 +95,9 @@ cmd_source_file_done(struct cmd_q *cmdq1)
 | 
			
		||||
{
 | 
			
		||||
	struct cmd_q	*cmdq = cmdq1->data;
 | 
			
		||||
 | 
			
		||||
	if (cmdq1->client_exit >= 0)
 | 
			
		||||
		cmdq->client_exit = cmdq1->client_exit;
 | 
			
		||||
 | 
			
		||||
	cmdq_free(cmdq1);
 | 
			
		||||
 | 
			
		||||
	cfg_references--;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user