From b9bbe1d81c41411f62e73c180c02ec05cc224efd Mon Sep 17 00:00:00 2001 From: Tiago Cunha Date: Sun, 21 Aug 2011 12:35:47 +0000 Subject: Sync OpenBSD patchset 943: Correctly skip existing numbers when generating the name for a new session. --- session.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'session.c') diff --git a/session.c b/session.c index 4f5a7fee..2fa61d2b 100644 --- a/session.c +++ b/session.c @@ -118,11 +118,18 @@ session_create(const char *name, const char *cmd, const char *cwd, s->sx = sx; s->sy = sy; - s->idx = next_session++; - if (name != NULL) + if (name != NULL) { s->name = xstrdup(name); - else - xasprintf(&s->name, "%u", s->idx); + 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); + } while (RB_FIND(sessions, &sessions, s) != NULL); + } RB_INSERT(sessions, &sessions, s); if (cmd != NULL) { -- cgit