mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Use pointer rather than index for the client's last session.
This commit is contained in:
		@@ -122,7 +122,7 @@ int
 | 
			
		||||
cmd_new_session_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
{
 | 
			
		||||
	struct cmd_new_session_data	*data = self->data;
 | 
			
		||||
	struct session			*s, *groupwith;
 | 
			
		||||
	struct session			*s, *old_s, *groupwith;
 | 
			
		||||
	struct window			*w;
 | 
			
		||||
	struct window_pane		*wp;
 | 
			
		||||
	struct environ			 env;
 | 
			
		||||
@@ -279,17 +279,16 @@ cmd_new_session_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
	if (!detached) {
 | 
			
		||||
		if (ctx->cmdclient != NULL) {
 | 
			
		||||
			server_write_client(ctx->cmdclient, MSG_READY, NULL, 0);
 | 
			
		||||
			if (ctx->cmdclient->session != NULL) {
 | 
			
		||||
				session_index(ctx->cmdclient->session,
 | 
			
		||||
				    &ctx->cmdclient->last_session);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			old_s = ctx->cmdclient->session;
 | 
			
		||||
			if (old_s != NULL)
 | 
			
		||||
				ctx->cmdclient->last_session = old_s;
 | 
			
		||||
			ctx->cmdclient->session = s;
 | 
			
		||||
			server_redraw_client(ctx->cmdclient);
 | 
			
		||||
		} else {
 | 
			
		||||
			if (ctx->curclient->session != NULL) {
 | 
			
		||||
				session_index(ctx->curclient->session,
 | 
			
		||||
				    &ctx->curclient->last_session);
 | 
			
		||||
			}
 | 
			
		||||
			old_s = ctx->curclient->session;
 | 
			
		||||
			if (old_s != NULL)
 | 
			
		||||
				ctx->curclient->last_session = old_s;
 | 
			
		||||
			ctx->curclient->session = s;
 | 
			
		||||
			server_redraw_client(ctx->curclient);
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -159,9 +159,8 @@ cmd_switch_client_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
			return (-1);
 | 
			
		||||
		}
 | 
			
		||||
	} else if (data->flag_last) {
 | 
			
		||||
		if (c->last_session != UINT_MAX &&
 | 
			
		||||
		    c->last_session < ARRAY_LENGTH(&sessions))
 | 
			
		||||
			s = ARRAY_ITEM(&sessions, c->last_session);
 | 
			
		||||
		if (c->last_session != NULL && session_alive(c->last_session))
 | 
			
		||||
			s = c->last_session;
 | 
			
		||||
		if (s == NULL) {
 | 
			
		||||
			ctx->error(ctx, "can't find last session");
 | 
			
		||||
			return (-1);
 | 
			
		||||
@@ -172,7 +171,7 @@ cmd_switch_client_exec(struct cmd *self, struct cmd_ctx *ctx)
 | 
			
		||||
		return (-1);
 | 
			
		||||
 | 
			
		||||
	if (c->session != NULL)
 | 
			
		||||
		session_index(c->session, &c->last_session);
 | 
			
		||||
		c->last_session = c->session;
 | 
			
		||||
	c->session = s;
 | 
			
		||||
 | 
			
		||||
	recalculate_sizes();
 | 
			
		||||
 
 | 
			
		||||
@@ -78,7 +78,7 @@ server_client_create(int fd)
 | 
			
		||||
	c->title = NULL;
 | 
			
		||||
 | 
			
		||||
	c->session = NULL;
 | 
			
		||||
	c->last_session = UINT_MAX;
 | 
			
		||||
	c->last_session = NULL;
 | 
			
		||||
	c->tty.sx = 80;
 | 
			
		||||
	c->tty.sy = 24;
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -399,7 +399,7 @@ server_destroy_session(struct session *s)
 | 
			
		||||
			c->session = NULL;
 | 
			
		||||
			c->flags |= CLIENT_EXIT;
 | 
			
		||||
		} else {
 | 
			
		||||
			c->last_session = UINT_MAX;
 | 
			
		||||
			c->last_session = NULL;
 | 
			
		||||
			c->session = s_new;
 | 
			
		||||
			server_redraw_client(c);
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user