summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTiago Cunha <tcunha@gmx.com>2010-12-22 15:31:00 +0000
committerTiago Cunha <tcunha@gmx.com>2010-12-22 15:31:00 +0000
commitbb728b89a7b0e0f1921c336d3f25ab0ee02322f8 (patch)
tree7b130934f4b366ad4094dc66a1a85dbc4e74dcf9
parent64d16cf2d67c42642401cd0bbaeb278a1c00822a (diff)
Sync OpenBSD patchset 802:
Use pointer rather than index for the client's last session.
-rw-r--r--cmd-new-session.c19
-rw-r--r--cmd-switch-client.c9
-rw-r--r--server-client.c4
-rw-r--r--server-fn.c4
-rw-r--r--tmux.h4
5 files changed, 19 insertions, 21 deletions
diff --git a/cmd-new-session.c b/cmd-new-session.c
index d09e2e7d..4e5192bd 100644
--- a/cmd-new-session.c
+++ b/cmd-new-session.c
@@ -1,4 +1,4 @@
-/* $Id: cmd-new-session.c,v 1.79 2010-12-11 18:42:20 nicm Exp $ */
+/* $Id: cmd-new-session.c,v 1.80 2010-12-22 15:31:00 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -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);
}
diff --git a/cmd-switch-client.c b/cmd-switch-client.c
index 20bf7f9b..e12bd1d6 100644
--- a/cmd-switch-client.c
+++ b/cmd-switch-client.c
@@ -1,4 +1,4 @@
-/* $Id: cmd-switch-client.c,v 1.22 2010-12-11 18:42:20 nicm Exp $ */
+/* $Id: cmd-switch-client.c,v 1.23 2010-12-22 15:31:00 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -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();
diff --git a/server-client.c b/server-client.c
index 313fbdda..5bff166e 100644
--- a/server-client.c
+++ b/server-client.c
@@ -1,4 +1,4 @@
-/* $Id: server-client.c,v 1.47 2010-12-11 18:42:20 nicm Exp $ */
+/* $Id: server-client.c,v 1.48 2010-12-22 15:31:00 tcunha Exp $ */
/*
* Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -77,7 +77,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;
diff --git a/server-fn.c b/server-fn.c
index c5a5ccb2..f29399d2 100644
--- a/server-fn.c
+++ b/server-fn.c
@@ -1,4 +1,4 @@
-/* $Id: server-fn.c,v 1.114 2010-12-11 18:42:20 nicm Exp $ */
+/* $Id: server-fn.c,v 1.115 2010-12-22 15:31:00 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -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);
}
diff --git a/tmux.h b/tmux.h
index 4ae1fd2b..92dd10c9 100644
--- a/tmux.h
+++ b/tmux.h
@@ -1,4 +1,4 @@
-/* $Id: tmux.h,v 1.588 2010-12-22 15:28:51 tcunha Exp $ */
+/* $Id: tmux.h,v 1.589 2010-12-22 15:31:00 tcunha Exp $ */
/*
* Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
@@ -1153,7 +1153,7 @@ struct client {
struct mode_key_data prompt_mdata;
struct session *session;
- u_int last_session;
+ struct session *last_session;
int references;
};