aboutsummaryrefslogtreecommitdiff
path: root/session.c
diff options
context:
space:
mode:
Diffstat (limited to 'session.c')
-rw-r--r--session.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/session.c b/session.c
index 2bcb1b98..002155a9 100644
--- a/session.c
+++ b/session.c
@@ -126,7 +126,7 @@ session_create(const char *name, int argc, char **argv, const char *path,
s->name = NULL;
do {
s->id = next_session_id++;
- free (s->name);
+ free(s->name);
xasprintf(&s->name, "%u", s->id);
} while (RB_FIND(sessions, &sessions, s) != NULL);
}
@@ -491,6 +491,19 @@ session_group_remove(struct session *s)
}
}
+/* Count number of sessions in session group. */
+u_int
+session_group_count(struct session_group *sg)
+{
+ struct session *s;
+ u_int n;
+
+ n = 0;
+ TAILQ_FOREACH(s, &sg->sessions, gentry)
+ n++;
+ return (n);
+}
+
/* Synchronize a session to its session group. */
void
session_group_synchronize_to(struct session *s)
@@ -578,8 +591,9 @@ session_group_synchronize1(struct session *target, struct session *s)
/* Then free the old winlinks list. */
while (!RB_EMPTY(&old_windows)) {
wl = RB_ROOT(&old_windows);
- if (winlink_find_by_window_id(&s->windows, wl->window->id) == NULL)
- notify_window_unlinked(s, wl->window);
+ wl2 = winlink_find_by_window_id(&s->windows, wl->window->id);
+ if (wl2 == NULL)
+ notify_window_unlinked(s, wl->window);
winlink_remove(&old_windows, wl);
}
}