Correctly skip existing numbers when generating the name for a new

session.
This commit is contained in:
Nicholas Marriott 2011-08-16 09:36:23 +00:00
parent cf90f2a29c
commit 6b734d1074
1 changed files with 11 additions and 4 deletions

View File

@ -119,11 +119,18 @@ session_create(const char *name, const char *cmd, const char *cwd,
s->sx = sx; s->sx = sx;
s->sy = sy; s->sy = sy;
s->idx = next_session++; if (name != NULL) {
if (name != NULL)
s->name = xstrdup(name); s->name = xstrdup(name);
else s->idx = next_session++;
} else {
s->name = NULL;
do {
s->idx = next_session++;
if (s->name != NULL)
xfree (s->name);
xasprintf(&s->name, "%u", s->idx); xasprintf(&s->name, "%u", s->idx);
} while (RB_FIND(sessions, &sessions, s) != NULL);
}
RB_INSERT(sessions, &sessions, s); RB_INSERT(sessions, &sessions, s);
if (cmd != NULL) { if (cmd != NULL) {