diff --git a/session.c b/session.c index 462db7c7f..02d20e60e 100644 --- a/session.c +++ b/session.c @@ -1,4 +1,4 @@ -/* $OpenBSD: session.c,v 1.108 2026/09/21 12:43:36 nicm Exp $ */ +/* $OpenBSD: session.c,v 1.109 2026/09/25 08:46:06 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -747,14 +747,21 @@ session_renumber_windows(struct session *s) struct winlink *wl, *wl1, *wl_new; struct winlinks old_wins; struct winlink_stack old_lastw; + u_int n; int new_idx, new_curw_idx, marked_idx = -1; + /* Start renumbering from the base-index if it's set. */ + new_idx = options_get_number(s->options, "base-index"); + + /* Leave the indexes alone if they do not all fit from there. */ + n = winlink_count(&s->windows); + if (n > (u_int)INT_MAX - (u_int)new_idx + 1) + return; + /* Save and replace old window list. */ memcpy(&old_wins, &s->windows, sizeof old_wins); RB_INIT(&s->windows); - /* Start renumbering from the base-index if it's set. */ - new_idx = options_get_number(s->options, "base-index"); new_curw_idx = 0; /* Go through the winlinks and assign new indexes. */ @@ -769,7 +776,8 @@ session_renumber_windows(struct session *s) if (wl == s->curw) new_curw_idx = wl_new->idx; - new_idx++; + if (RB_NEXT(winlinks, &old_wins, wl) != NULL) + new_idx++; } /* Fix the stack of last windows now. */ diff --git a/tmux.c b/tmux.c index ab7c5133a..51b0c29eb 100644 --- a/tmux.c +++ b/tmux.c @@ -1,4 +1,4 @@ -/* $OpenBSD: tmux.c,v 1.223 2026/08/17 14:47:41 nicm Exp $ */ +/* $OpenBSD: tmux.c,v 1.224 2026/09/25 09:11:18 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -178,8 +178,8 @@ expand_paths(const char *s, char ***paths, u_int *n, int no_realpath) path = expanded; else { if (realpath(expanded, resolved) == NULL) { - log_debug("%s: realpath(\"%s\") failed: %s", __func__, - expanded, strerror(errno)); + log_debug("%s: realpath(\"%s\") failed: %s", + __func__, expanded, strerror(errno)); free(expanded); continue; } diff --git a/window.c b/window.c index f86e8470f..777788862 100644 --- a/window.c +++ b/window.c @@ -1,4 +1,4 @@ -/* $OpenBSD: window.c,v 1.378 2026/09/24 11:19:39 nicm Exp $ */ +/* $OpenBSD: window.c,v 1.379 2026/09/25 08:46:06 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott @@ -2436,7 +2436,7 @@ winlink_shuffle_up(struct session *s, struct winlink *wl, int before) { int idx, last; - if (wl == NULL) + if (wl == NULL || wl->idx == INT_MAX) return (-1); if (before) idx = wl->idx;